diff --git a/cef1/cef_paths2.gypi b/cef1/cef_paths2.gypi index 4a3638447..5a8ba864d 100644 --- a/cef1/cef_paths2.gypi +++ b/cef1/cef_paths2.gypi @@ -78,6 +78,16 @@ 'libcef_dll/wrapper/libcef_dll_wrapper2.cc', '<@(autogen_client_side)', ], + 'cefclient_bundle_resources_common': [ + 'tests/cefclient/res/dialogs.html', + 'tests/cefclient/res/domaccess.html', + 'tests/cefclient/res/localstorage.html', + 'tests/cefclient/res/logo.png', + 'tests/cefclient/res/other_tests.html', + 'tests/cefclient/res/performance.html', + 'tests/cefclient/res/transparency.html', + 'tests/cefclient/res/xmlhttprequest.html', + ], 'cefclient_sources_common': [ 'tests/cefclient/binding_test.cpp', 'tests/cefclient/binding_test.h', @@ -97,18 +107,13 @@ 'tests/cefclient/performance_test.h', 'tests/cefclient/performance_test_setup.h', 'tests/cefclient/performance_test_tests.cpp', - 'tests/cefclient/res/dialogs.html', - 'tests/cefclient/res/domaccess.html', - 'tests/cefclient/res/localstorage.html', - 'tests/cefclient/res/logo.png', - 'tests/cefclient/res/performance.html', - 'tests/cefclient/res/xmlhttprequest.html', 'tests/cefclient/resource_util.h', 'tests/cefclient/scheme_test.cpp', 'tests/cefclient/scheme_test.h', 'tests/cefclient/string_util.cpp', 'tests/cefclient/string_util.h', 'tests/cefclient/util.h', + '<@(cefclient_bundle_resources_common)', ], 'cefclient_sources_win': [ 'tests/cefclient/cefclient.rc', @@ -131,7 +136,6 @@ 'tests/cefclient/res/modalmain.html', 'tests/cefclient/res/osrplugin.html', 'tests/cefclient/res/small.ico', - 'tests/cefclient/res/transparency.html', 'tests/cefclient/res/uiplugin.html', 'tests/cefclient/resource_util_win.cpp', 'tests/cefclient/uiplugin.cpp', @@ -147,34 +151,24 @@ 'tests/cefclient/osrtest_mac.h', 'tests/cefclient/osrtest_mac.mm', 'tests/cefclient/resource_util_mac.mm', + 'tests/cefclient/resource_util_posix.cpp', ], 'cefclient_bundle_resources_mac': [ 'tests/cefclient/mac/cefclient.icns', 'tests/cefclient/mac/English.lproj/InfoPlist.strings', 'tests/cefclient/mac/English.lproj/MainMenu.xib', 'tests/cefclient/mac/Info.plist', - 'tests/cefclient/res/dialogs.html', - 'tests/cefclient/res/domaccess.html', - 'tests/cefclient/res/localstorage.html', - 'tests/cefclient/res/logo.png', - 'tests/cefclient/res/logoball.png', - 'tests/cefclient/res/performance.html', 'tests/cefclient/res/osrtest.html', - 'tests/cefclient/res/transparency.html', - 'tests/cefclient/res/xmlhttprequest.html', + '<@(cefclient_bundle_resources_common)', ], 'cefclient_sources_linux': [ 'tests/cefclient/cefclient_gtk.cpp', 'tests/cefclient/client_handler_gtk.cpp', 'tests/cefclient/resource_util_linux.cpp', + 'tests/cefclient/resource_util_posix.cpp', ], 'cefclient_bundle_resources_linux': [ - 'tests/cefclient/res/dialogs.html', - 'tests/cefclient/res/domaccess.html', - 'tests/cefclient/res/localstorage.html', - 'tests/cefclient/res/logo.png', - 'tests/cefclient/res/performance.html', - 'tests/cefclient/res/xmlhttprequest.html', + '<@(cefclient_bundle_resources_common)', ], }, } diff --git a/cef1/tests/cefclient/cefclient.cpp b/cef1/tests/cefclient/cefclient.cpp index 085b67e23..26d0b9de7 100644 --- a/cef1/tests/cefclient/cefclient.cpp +++ b/cef1/tests/cefclient/cefclient.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Embedded Framework Authors. All rights +// Copyright (c) 2013 The Chromium Embedded Framework Authors. All rights // reserved. Use of this source code is governed by a BSD-style license that // can be found in the LICENSE file. @@ -128,7 +128,7 @@ class ClientApp : public CefApp, virtual void OnRegisterCustomSchemes( CefRefPtr registrar) OVERRIDE { - AddSchemeTestSchemes(registrar); + scheme_test::AddSchemes(registrar); } // CefApp methods @@ -472,29 +472,6 @@ void RunPopupTest(CefRefPtr browser) { "window.open('http://www.google.com');", "about:blank", 0); } -void RunLocalStorageTest(CefRefPtr browser) { - browser->GetMainFrame()->LoadURL("http://tests/localstorage"); -} - -void RunAccelerated2DCanvasTest(CefRefPtr browser) { - browser->GetMainFrame()->LoadURL( - "http://mudcu.be/labs/JS1k/BreathingGalaxies.html"); -} - -void RunAcceleratedLayersTest(CefRefPtr browser) { - browser->GetMainFrame()->LoadURL( - "http://webkit.org/blog-files/3d-transforms/poster-circle.html"); -} - -void RunWebGLTest(CefRefPtr browser) { - browser->GetMainFrame()->LoadURL( - "http://webglsamples.googlecode.com/hg/field/field.html"); -} - -void RunXMLHTTPRequestTest(CefRefPtr browser) { - browser->GetMainFrame()->LoadURL("http://tests/xmlhttprequest"); -} - void RunWebURLRequestTest(CefRefPtr browser) { class RequestClient : public CefWebURLRequestClient { public: @@ -643,14 +620,6 @@ void RunDOMAccessTest(CefRefPtr browser) { browser->GetMainFrame()->LoadURL("http://tests/domaccess"); } -void RunDragDropTest(CefRefPtr browser) { - browser->GetMainFrame()->LoadURL("http://html5demos.com/drag"); -} - -void RunModalDialogTest(CefRefPtr browser) { - browser->GetMainFrame()->LoadURL("http://tests/modalmain"); -} - void RunPluginInfoTest(CefRefPtr browser) { if (CefCurrentlyOn(TID_UI)) { UIT_RunPluginInfoTest(browser); @@ -661,10 +630,6 @@ void RunPluginInfoTest(CefRefPtr browser) { } } -void RunGeolocationTest(CefRefPtr browser) { - browser->GetMainFrame()->LoadURL("http://html5demos.com/geo"); -} - -void RunDialogsTest(CefRefPtr browser) { - browser->GetMainFrame()->LoadURL("http://tests/dialogs"); +void RunOtherTests(CefRefPtr browser) { + browser->GetMainFrame()->LoadURL("http://tests/other_tests"); } diff --git a/cef1/tests/cefclient/cefclient.h b/cef1/tests/cefclient/cefclient.h index c5c6b2c2a..504e365ce 100644 --- a/cef1/tests/cefclient/cefclient.h +++ b/cef1/tests/cefclient/cefclient.h @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Embedded Framework Authors. All rights +// Copyright (c) 2013 The Chromium Embedded Framework Authors. All rights // reserved. Use of this source code is governed by a BSD-style license that // can be found in the LICENSE file. @@ -41,18 +41,10 @@ void RunRequestTest(CefRefPtr browser); void RunJavaScriptExecuteTest(CefRefPtr browser); void RunJavaScriptInvokeTest(CefRefPtr browser); void RunPopupTest(CefRefPtr browser); -void RunLocalStorageTest(CefRefPtr browser); -void RunAccelerated2DCanvasTest(CefRefPtr browser); -void RunAcceleratedLayersTest(CefRefPtr browser); -void RunWebGLTest(CefRefPtr browser); -void RunXMLHTTPRequestTest(CefRefPtr browser); void RunWebURLRequestTest(CefRefPtr browser); void RunDOMAccessTest(CefRefPtr browser); -void RunDragDropTest(CefRefPtr browser); -void RunModalDialogTest(CefRefPtr browser); void RunPluginInfoTest(CefRefPtr browser); -void RunGeolocationTest(CefRefPtr browser); -void RunDialogsTest(CefRefPtr browser); +void RunOtherTests(CefRefPtr browser); #if defined(OS_WIN) void RunTransparentPopupTest(CefRefPtr browser); diff --git a/cef1/tests/cefclient/cefclient.rc b/cef1/tests/cefclient/cefclient.rc index 540946d52..ca9794486 100644 --- a/cef1/tests/cefclient/cefclient.rc +++ b/cef1/tests/cefclient/cefclient.rc @@ -36,6 +36,7 @@ IDS_LOGOBALL BINARY "res\\logoball.png" IDS_MODALDIALOG BINARY "res\\modaldialog.html" IDS_MODALMAIN BINARY "res\\modalmain.html" IDS_OSRPLUGIN BINARY "res\\osrplugin.html" +IDS_OTHER_TESTS BINARY "res\\other_tests.html" IDS_PERFORMANCE BINARY "res\\performance.html" IDS_TRANSPARENCY BINARY "res\\transparency.html" IDS_UIPLUGIN BINARY "res\\uiplugin.html" @@ -74,37 +75,29 @@ BEGIN BEGIN MENUITEM "Get Source", ID_TESTS_GETSOURCE MENUITEM "Get Text", ID_TESTS_GETTEXT + MENUITEM "Popup Window", ID_TESTS_POPUP + MENUITEM "Transparent Popup Window", ID_TESTS_TRANSPARENT_POPUP + MENUITEM "Request", ID_TESTS_REQUEST + MENUITEM "Scheme Handler", ID_TESTS_SCHEME_HANDLER MENUITEM "JavaScript Binding Handler", ID_TESTS_JAVASCRIPT_BINDING MENUITEM "JavaScript Extension Handler",ID_TESTS_JAVASCRIPT_EXTENSION MENUITEM "JavaScript Execute", ID_TESTS_JAVASCRIPT_EXECUTE MENUITEM "JavaScript Invoke", ID_TESTS_JAVASCRIPT_INVOKE MENUITEM "Performance Tests", ID_TESTS_PERFORMANCE - MENUITEM "Dialogs", ID_TESTS_DIALOGS - MENUITEM "Plugin", ID_TESTS_PLUGIN MENUITEM "Plugin Info", ID_TESTS_PLUGIN_INFO - MENUITEM "Popup Window", ID_TESTS_POPUP - MENUITEM "Transparent Popup Window", ID_TESTS_TRANSPARENT_POPUP - MENUITEM "Request", ID_TESTS_REQUEST - MENUITEM "Scheme Handler", ID_TESTS_SCHEME_HANDLER + MENUITEM "WebURLRequest", ID_TESTS_WEBURLREQUEST + MENUITEM "DOM Access", ID_TESTS_DOMACCESS + MENUITEM "Zoom In", ID_TESTS_ZOOM_IN + MENUITEM "Zoom Out", ID_TESTS_ZOOM_OUT + MENUITEM "Zoom Reset", ID_TESTS_ZOOM_RESET + MENUITEM "Show Developer Tools", ID_TESTS_DEVTOOLS_SHOW + MENUITEM "Close Developer Tools", ID_TESTS_DEVTOOLS_CLOSE + MENUITEM "Plugin", ID_TESTS_PLUGIN MENUITEM "UI App Example", ID_TESTS_UIAPP MENUITEM "Off-Screen Rendering Example",ID_TESTS_OSRAPP MENUITEM "Transparent Off-Screen Rendering Example",ID_TESTS_TRANSPARENT_OSRAPP - MENUITEM "Local Storage", ID_TESTS_LOCALSTORAGE - MENUITEM "XMLHttpRequest", ID_TESTS_XMLHTTPREQUEST - MENUITEM "WebURLRequest", ID_TESTS_WEBURLREQUEST - MENUITEM "DOM Access", ID_TESTS_DOMACCESS - MENUITEM "Accelerated 2D Canvas", ID_TESTS_ACCELERATED2DCANVAS - MENUITEM "Accelerated Layers", ID_TESTS_ACCELERATEDLAYERS - MENUITEM "WebGL", ID_TESTS_WEBGL - MENUITEM "Drag && Drop", ID_TESTS_DRAGDROP - MENUITEM "Geolocation", ID_TESTS_GEOLOCATION - MENUITEM "Zoom In", ID_TESTS_ZOOM_IN - MENUITEM "Zoom Out", ID_TESTS_ZOOM_OUT - MENUITEM "Reset Zoom", ID_TESTS_ZOOM_RESET - MENUITEM "Show Developer Tools", ID_TESTS_DEVTOOLS_SHOW - MENUITEM "Close Developer Tools", ID_TESTS_DEVTOOLS_CLOSE - MENUITEM "Modal Dialog", ID_TESTS_MODALDIALOG MENUITEM "Get Image", ID_TESTS_GETIMAGE + MENUITEM "Other Tests", ID_TESTS_OTHER_TESTS END END diff --git a/cef1/tests/cefclient/cefclient_gtk.cpp b/cef1/tests/cefclient/cefclient_gtk.cpp index f3f8bc489..bb1cbac1a 100644 --- a/cef1/tests/cefclient/cefclient_gtk.cpp +++ b/cef1/tests/cefclient/cefclient_gtk.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Embedded Framework Authors. All rights +// Copyright (c) 2013 The Chromium Embedded Framework Authors. All rights // reserved. Use of this source code is governed by a BSD-style license that // can be found in the LICENSE file. @@ -31,7 +31,7 @@ void TerminationSignalHandler(int signatl) { destroy(); } -// Callback for Debug > Get Source... menu item. +// Callback for Tests > Get Source... menu item. gboolean GetSourceActivated(GtkWidget* widget) { if (g_handler.get() && g_handler->GetBrowserHwnd()) RunGetSourceTest(g_handler->GetBrowser()); @@ -39,7 +39,7 @@ gboolean GetSourceActivated(GtkWidget* widget) { return FALSE; // Don't stop this message. } -// Callback for Debug > Get Source... menu item. +// Callback for Tests > Get Source... menu item. gboolean GetTextActivated(GtkWidget* widget) { if (g_handler.get() && g_handler->GetBrowserHwnd()) RunGetTextTest(g_handler->GetBrowser()); @@ -47,95 +47,7 @@ gboolean GetTextActivated(GtkWidget* widget) { return FALSE; // Don't stop this message. } -// Callback for Debug > JS Binding... menu item. -gboolean JSBindngActivated(GtkWidget* widget) { - if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunBindingTest(g_handler->GetBrowser()); - - return FALSE; // Don't stop this message. -} - -// Callback for Debug > JS Extension... menu item. -gboolean JSExtensionActivated(GtkWidget* widget) { - if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunExtensionTest(g_handler->GetBrowser()); - - return FALSE; // Don't stop this message. -} - -// Callback for Debug > JS Execute... menu item. -gboolean JSExecuteActivated(GtkWidget* widget) { - if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunJavaScriptExecuteTest(g_handler->GetBrowser()); - - return FALSE; // Don't stop this message. -} - -// Callback for Debug > Performance Tests... menu item. -gboolean PerformanceActivated(GtkWidget* widget) { - if (g_handler.get() && g_handler->GetBrowserHwnd()) - performance_test::RunTest(g_handler->GetBrowser()); - - return FALSE; // Don't stop this message. -} - -// Callback for Debug > Dialogs... menu item. -gboolean DialogsActivated(GtkWidget* widget) { - if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunDialogsTest(g_handler->GetBrowser()); - - return FALSE; // Don't stop this message. -} - -// Callback for Debug > Request... menu item. -gboolean RequestActivated(GtkWidget* widget) { - if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunRequestTest(g_handler->GetBrowser()); - - return FALSE; // Don't stop this message. -} - -// Callback for Debug > Local Storage... menu item. -gboolean LocalStorageActivated(GtkWidget* widget) { - if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunLocalStorageTest(g_handler->GetBrowser()); - - return FALSE; // Don't stop this message. -} - -// Callback for Debug > XMLHttpRequest... menu item. -gboolean XMLHttpRequestActivated(GtkWidget* widget) { - if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunXMLHTTPRequestTest(g_handler->GetBrowser()); - - return FALSE; // Don't stop this message. -} - -// Callback for Debug > WebURLRequest... menu item. -gboolean WebURLRequestActivated(GtkWidget* widget) { - if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunWebURLRequestTest(g_handler->GetBrowser()); - - return FALSE; // Don't stop this message. -} - -// Callback for Debug > DOM Access... menu item. -gboolean DOMAccessActivated(GtkWidget* widget) { - if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunDOMAccessTest(g_handler->GetBrowser()); - - return FALSE; // Don't stop this message. -} - -// Callback for Debug > Scheme Handler... menu item. -gboolean SchemeHandlerActivated(GtkWidget* widget) { - if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunSchemeTest(g_handler->GetBrowser()); - - return FALSE; // Don't stop this message. -} - -// Callback for Debug > Popup Window... menu item. +// Callback for Tests > Popup Window... menu item. gboolean PopupWindowActivated(GtkWidget* widget) { if (g_handler.get() && g_handler->GetBrowserHwnd()) RunPopupTest(g_handler->GetBrowser()); @@ -143,31 +55,87 @@ gboolean PopupWindowActivated(GtkWidget* widget) { return FALSE; // Don't stop this message. } -// Callback for Debug > Accelerated 2D Canvas:... menu item. -gboolean Accelerated2DCanvasActivated(GtkWidget* widget) { +// Callback for Tests > Request... menu item. +gboolean RequestActivated(GtkWidget* widget) { if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunAccelerated2DCanvasTest(g_handler->GetBrowser()); + RunRequestTest(g_handler->GetBrowser()); return FALSE; // Don't stop this message. } -// Callback for Debug > Accelerated Layers:... menu item. -gboolean AcceleratedLayersActivated(GtkWidget* widget) { +// Callback for Tests > Scheme Handler... menu item. +gboolean SchemeHandlerActivated(GtkWidget* widget) { if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunAcceleratedLayersTest(g_handler->GetBrowser()); + scheme_test::RunTest(g_handler->GetBrowser()); return FALSE; // Don't stop this message. } -// Callback for Debug > WebGL:... menu item. -gboolean WebGLActivated(GtkWidget* widget) { +// Callback for Tests > JS Binding... menu item. +gboolean JSBindingActivated(GtkWidget* widget) { if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunWebGLTest(g_handler->GetBrowser()); + RunBindingTest(g_handler->GetBrowser()); return FALSE; // Don't stop this message. } -// Callback for Debug > Zoom In... menu item. +// Callback for Tests > JavaScript Extension... menu item. +gboolean JSExtensionActivated(GtkWidget* widget) { + if (g_handler.get() && g_handler->GetBrowserHwnd()) + extension_test::RunTest(g_handler->GetBrowser()); + + return FALSE; // Don't stop this message. +} + +// Callback for Tests > JavaScript Execute... menu item. +gboolean JSExecuteActivated(GtkWidget* widget) { + if (g_handler.get() && g_handler->GetBrowserHwnd()) + RunJavaScriptExecuteTest(g_handler->GetBrowser()); + + return FALSE; // Don't stop this message. +} + +// Callback for Tests > JavaScript Invoke... menu item. +gboolean JSInvokeActivated(GtkWidget* widget) { + if (g_handler.get() && g_handler->GetBrowserHwnd()) + RunJavaScriptInvokeTest(g_handler->GetBrowser()); + + return FALSE; // Don't stop this message. +} + +// Callback for Tests > Performance Tests... menu item. +gboolean PerformanceActivated(GtkWidget* widget) { + if (g_handler.get() && g_handler->GetBrowserHwnd()) + performance_test::RunTest(g_handler->GetBrowser()); + + return FALSE; // Don't stop this message. +} + +// Callback for Tests > Plugin Info... menu item. +gboolean PluginInfoActivated(GtkWidget* widget) { + if (g_handler.get() && g_handler->GetBrowserHwnd()) + RunPluginInfoTest(g_handler->GetBrowser()); + + return FALSE; // Don't stop this message. +} + +// Callback for Tests > WebURLRequest... menu item. +gboolean WebURLRequestActivated(GtkWidget* widget) { + if (g_handler.get() && g_handler->GetBrowserHwnd()) + RunWebURLRequestTest(g_handler->GetBrowser()); + + return FALSE; // Don't stop this message. +} + +// Callback for Tests > DOM Access... menu item. +gboolean DOMAccessActivated(GtkWidget* widget) { + if (g_handler.get() && g_handler->GetBrowserHwnd()) + RunDOMAccessTest(g_handler->GetBrowser()); + + return FALSE; // Don't stop this message. +} + +// Callback for Tests > Zoom In... menu item. gboolean ZoomInActivated(GtkWidget* widget) { if (g_handler.get() && g_handler->GetBrowserHwnd()) { CefRefPtr browser = g_handler->GetBrowser(); @@ -177,7 +145,7 @@ gboolean ZoomInActivated(GtkWidget* widget) { return FALSE; // Don't stop this message. } -// Callback for Debug > Zoom Out... menu item. +// Callback for Tests > Zoom Out... menu item. gboolean ZoomOutActivated(GtkWidget* widget) { if (g_handler.get() && g_handler->GetBrowserHwnd()) { CefRefPtr browser = g_handler->GetBrowser(); @@ -187,7 +155,7 @@ gboolean ZoomOutActivated(GtkWidget* widget) { return FALSE; // Don't stop this message. } -// Callback for Debug > Zoom Reset... menu item. +// Callback for Tests > Zoom Reset... menu item. gboolean ZoomResetActivated(GtkWidget* widget) { if (g_handler.get() && g_handler->GetBrowserHwnd()) { CefRefPtr browser = g_handler->GetBrowser(); @@ -197,24 +165,6 @@ gboolean ZoomResetActivated(GtkWidget* widget) { return FALSE; // Don't stop this message. } -gboolean DragDropActivated(GtkWidget* widget) { - if (g_handler.get() && g_handler->GetBrowserHwnd()) { - CefRefPtr browser = g_handler->GetBrowser(); - RunDragDropTest(browser); - } - - return FALSE; // Don't stop this message. -} - -gboolean GeolocationActivated(GtkWidget* widget) { - if (g_handler.get() && g_handler->GetBrowserHwnd()) { - CefRefPtr browser = g_handler->GetBrowser(); - RunGeolocationTest(browser); - } - - return FALSE; // Don't stop this message. -} - gboolean ShowDevtoolsActivated(GtkWidget* widget) { if (g_handler.get() && g_handler->GetBrowserHwnd()) { CefRefPtr browser = g_handler->GetBrowser(); @@ -224,10 +174,19 @@ gboolean ShowDevtoolsActivated(GtkWidget* widget) { return FALSE; // Don't stop this message. } -// Callback for Debug > Plugin Info... menu item. -gboolean PluginInfoActivated(GtkWidget* widget) { +gboolean CloseDevtoolsActivated(GtkWidget* widget) { + if (g_handler.get() && g_handler->GetBrowserHwnd()) { + CefRefPtr browser = g_handler->GetBrowser(); + browser->CloseDevTools(); + } + + return FALSE; // Don't stop this message. +} + +// Callback for Tests > Other Tests... menu item. +gboolean OtherTestsActivated(GtkWidget* widget) { if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunPluginInfoTest(g_handler->GetBrowser()); + RunOtherTests(g_handler->GetBrowser()); return FALSE; // Don't stop this message. } @@ -291,48 +250,40 @@ GtkWidget* CreateMenuBar() { G_CALLBACK(GetSourceActivated)); AddMenuEntry(debug_menu, "Get Text", G_CALLBACK(GetTextActivated)); - AddMenuEntry(debug_menu, "JS Binding", - G_CALLBACK(JSBindngActivated)); - AddMenuEntry(debug_menu, "JS Extension", - G_CALLBACK(JSExtensionActivated)); - AddMenuEntry(debug_menu, "JS Execute", - G_CALLBACK(JSExecuteActivated)); - AddMenuEntry(debug_menu, "Performance Tests", - G_CALLBACK(PerformanceActivated)); - AddMenuEntry(debug_menu, "Dialogs", - G_CALLBACK(DialogsActivated)); - AddMenuEntry(debug_menu, "Request", - G_CALLBACK(RequestActivated)); - AddMenuEntry(debug_menu, "Local Storage", - G_CALLBACK(LocalStorageActivated)); - AddMenuEntry(debug_menu, "XMLHttpRequest", - G_CALLBACK(XMLHttpRequestActivated)); - AddMenuEntry(debug_menu, "DOM Access", - G_CALLBACK(DOMAccessActivated)); - AddMenuEntry(debug_menu, "Scheme Handler", - G_CALLBACK(SchemeHandlerActivated)); AddMenuEntry(debug_menu, "Popup Window", G_CALLBACK(PopupWindowActivated)); - AddMenuEntry(debug_menu, "Accelerated 2D Canvas", - G_CALLBACK(Accelerated2DCanvasActivated)); - AddMenuEntry(debug_menu, "Accelerated Layers", - G_CALLBACK(AcceleratedLayersActivated)); - AddMenuEntry(debug_menu, "WebGL", - G_CALLBACK(WebGLActivated)); + AddMenuEntry(debug_menu, "Request", + G_CALLBACK(RequestActivated)); + AddMenuEntry(debug_menu, "Scheme Handler", + G_CALLBACK(SchemeHandlerActivated)); + AddMenuEntry(debug_menu, "JavaScript Binding Handler", + G_CALLBACK(JSBindingActivated)); + AddMenuEntry(debug_menu, "JavaScript Extension Handler", + G_CALLBACK(JSExtensionActivated)); + AddMenuEntry(debug_menu, "JavaScript Execute", + G_CALLBACK(JSExecuteActivated)); + AddMenuEntry(debug_menu, "JavaScript Invoke", + G_CALLBACK(JSInvokeActivated)); + AddMenuEntry(debug_menu, "Performance Tests", + G_CALLBACK(PerformanceActivated)); + AddMenuEntry(debug_menu, "Plugin Info", + G_CALLBACK(PluginInfoActivated)); + AddMenuEntry(debug_menu, "WebURLRequest", + G_CALLBACK(WebURLRequestActivated)); + AddMenuEntry(debug_menu, "DOM Access", + G_CALLBACK(DOMAccessActivated)); AddMenuEntry(debug_menu, "Zoom In", G_CALLBACK(ZoomInActivated)); AddMenuEntry(debug_menu, "Zoom Out", G_CALLBACK(ZoomOutActivated)); AddMenuEntry(debug_menu, "Zoom Reset", G_CALLBACK(ZoomResetActivated)); - AddMenuEntry(debug_menu, "Drag & Drop", - G_CALLBACK(DragDropActivated)); - AddMenuEntry(debug_menu, "Geolocation", - G_CALLBACK(GeolocationActivated)); - AddMenuEntry(debug_menu, "Show DevTools", + AddMenuEntry(debug_menu, "Show Developer Tools", G_CALLBACK(ShowDevtoolsActivated)); - AddMenuEntry(debug_menu, "Plugin Info", - G_CALLBACK(PluginInfoActivated)); + AddMenuEntry(debug_menu, "Close Developer Tools", + G_CALLBACK(CloseDevtoolsActivated)); + AddMenuEntry(debug_menu, "Other Tests", + G_CALLBACK(OtherTestsActivated)); return menu_bar; } @@ -369,10 +320,10 @@ int main(int argc, char *argv[]) { CefInitialize(settings, app); // Register the V8 extension handler. - InitExtensionTest(); + extension_test::InitTest(); // Register the scheme handler. - InitSchemeTest(); + scheme_test::InitTest(); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size(GTK_WINDOW(window), 800, 600); diff --git a/cef1/tests/cefclient/cefclient_mac.mm b/cef1/tests/cefclient/cefclient_mac.mm index 5ca9a7c89..05039a9b3 100644 --- a/cef1/tests/cefclient/cefclient_mac.mm +++ b/cef1/tests/cefclient/cefclient_mac.mm @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Embedded Framework Authors. +// Copyright (c) 2013 The Chromium Embedded Framework Authors. // Portions copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -195,32 +195,25 @@ NSButton* MakeButton(NSRect* rect, NSString* title, NSView* parent) { - (void)createApp:(id)object; - (IBAction)testGetSource:(id)sender; - (IBAction)testGetText:(id)sender; +- (IBAction)testPopupWindow:(id)sender; +- (IBAction)testRequest:(id)sender; +- (IBAction)testSchemeHandler:(id)sender; - (IBAction)testJSBinding:(id)sender; - (IBAction)testJSExtension:(id)sender; - (IBAction)testJSExecute:(id)sender; - (IBAction)testJSInvoke:(id)sender; - (IBAction)testPerformance:(id)sender; -- (IBAction)testDialogs:(id)sender; -- (IBAction)testRequest:(id)sender; -- (IBAction)testLocalStorage:(id)sender; -- (IBAction)testXMLHttpRequest:(id)sender; +- (IBAction)testPluginInfo:(id)sender; - (IBAction)testWebURLRequest:(id)sender; - (IBAction)testDOMAccess:(id)sender; -- (IBAction)testSchemeHandler:(id)sender; -- (IBAction)testPopupWindow:(id)sender; -- (IBAction)testAccelerated2DCanvas:(id)sender; -- (IBAction)testAcceleratedLayers:(id)sender; -- (IBAction)testWebGL:(id)sender; -- (IBAction)testDragDrop:(id)sender; -- (IBAction)testGeolocation:(id)sender; - (IBAction)testZoomIn:(id)sender; - (IBAction)testZoomOut:(id)sender; - (IBAction)testZoomReset:(id)sender; - (IBAction)testDevToolsShow:(id)sender; - (IBAction)testDevToolsClose:(id)sender; -- (IBAction)testPluginInfo:(id)sender; - (IBAction)testOffscreenRendering:(id)sender; - (IBAction)testTransparentOffscreenRendering:(id)sender; +- (IBAction)testOtherTests:(id)sender; @end @implementation ClientAppDelegate @@ -245,6 +238,15 @@ NSButton* MakeButton(NSRect* rect, NSString* title, NSView* parent) { [testMenu addItemWithTitle:@"Get Text" action:@selector(testGetText:) keyEquivalent:@""]; + [testMenu addItemWithTitle:@"Popup Window" + action:@selector(testPopupWindow:) + keyEquivalent:@""]; + [testMenu addItemWithTitle:@"Request" + action:@selector(testRequest:) + keyEquivalent:@""]; + [testMenu addItemWithTitle:@"Scheme Handler" + action:@selector(testSchemeHandler:) + keyEquivalent:@""]; [testMenu addItemWithTitle:@"JavaScript Binding Handler" action:@selector(testJSBinding:) keyEquivalent:@""]; @@ -260,23 +262,8 @@ NSButton* MakeButton(NSRect* rect, NSString* title, NSView* parent) { [testMenu addItemWithTitle:@"Performance Tests" action:@selector(testPerformance:) keyEquivalent:@""]; - [testMenu addItemWithTitle:@"Dialogs" - action:@selector(testDialogs:) - keyEquivalent:@""]; - [testMenu addItemWithTitle:@"Popup Window" - action:@selector(testPopupWindow:) - keyEquivalent:@""]; - [testMenu addItemWithTitle:@"Request" - action:@selector(testRequest:) - keyEquivalent:@""]; - [testMenu addItemWithTitle:@"Scheme Handler" - action:@selector(testSchemeHandler:) - keyEquivalent:@""]; - [testMenu addItemWithTitle:@"Local Storage" - action:@selector(testLocalStorage:) - keyEquivalent:@""]; - [testMenu addItemWithTitle:@"XMLHttpRequest" - action:@selector(testXMLHttpRequest:) + [testMenu addItemWithTitle:@"Plugin Info" + action:@selector(testPluginInfo:) keyEquivalent:@""]; [testMenu addItemWithTitle:@"WebURLRequest" action:@selector(testWebURLRequest:) @@ -284,21 +271,6 @@ NSButton* MakeButton(NSRect* rect, NSString* title, NSView* parent) { [testMenu addItemWithTitle:@"DOM Access" action:@selector(testDOMAccess:) keyEquivalent:@""]; - [testMenu addItemWithTitle:@"Accelerated 2D Canvas" - action:@selector(testAccelerated2DCanvas:) - keyEquivalent:@""]; - [testMenu addItemWithTitle:@"Accelerated Layers" - action:@selector(testAcceleratedLayers:) - keyEquivalent:@""]; - [testMenu addItemWithTitle:@"WebGL" - action:@selector(testWebGL:) - keyEquivalent:@""]; - [testMenu addItemWithTitle:@"Drag & Drop" - action:@selector(testDragDrop:) - keyEquivalent:@""]; - [testMenu addItemWithTitle:@"Geolocation" - action:@selector(testGeolocation:) - keyEquivalent:@""]; [testMenu addItemWithTitle:@"Zoom In" action:@selector(testZoomIn:) keyEquivalent:@""]; @@ -308,21 +280,21 @@ NSButton* MakeButton(NSRect* rect, NSString* title, NSView* parent) { [testMenu addItemWithTitle:@"Zoom Reset" action:@selector(testZoomReset:) keyEquivalent:@""]; - [testMenu addItemWithTitle:@"Show DevTools" + [testMenu addItemWithTitle:@"Show Developer Tools" action:@selector(testDevToolsShow:) keyEquivalent:@""]; - [testMenu addItemWithTitle:@"Close DevTools" + [testMenu addItemWithTitle:@"Close Developer Tools" action:@selector(testDevToolsClose:) keyEquivalent:@""]; - [testMenu addItemWithTitle:@"Plugin Info" - action:@selector(testPluginInfo:) - keyEquivalent:@""]; [testMenu addItemWithTitle:@"Offscreen Rendering" action:@selector(testOffscreenRendering:) keyEquivalent:@""]; [testMenu addItemWithTitle:@"Transparent Offscreen Rendering" action:@selector(testTransparentOffscreenRendering:) keyEquivalent:@""]; + [testMenu addItemWithTitle:@"Other Tests" + action:@selector(testOtherTests:) + keyEquivalent:@""]; [testItem setSubmenu:testMenu]; [menubar addItem:testItem]; @@ -424,6 +396,21 @@ NSButton* MakeButton(NSRect* rect, NSString* title, NSView* parent) { RunGetTextTest(g_handler->GetBrowser()); } +- (IBAction)testPopupWindow:(id)sender { + if (g_handler.get() && g_handler->GetBrowserHwnd()) + RunPopupTest(g_handler->GetBrowser()); +} + +- (IBAction)testRequest:(id)sender { + if (g_handler.get() && g_handler->GetBrowserHwnd()) + RunRequestTest(g_handler->GetBrowser()); +} + +- (IBAction)testSchemeHandler:(id)sender { + if (g_handler.get() && g_handler->GetBrowserHwnd()) + scheme_test::RunTest(g_handler->GetBrowser()); +} + - (IBAction)testJSBinding:(id)sender { if (g_handler.get() && g_handler->GetBrowserHwnd()) RunBindingTest(g_handler->GetBrowser()); @@ -431,7 +418,7 @@ NSButton* MakeButton(NSRect* rect, NSString* title, NSView* parent) { - (IBAction)testJSExtension:(id)sender { if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunExtensionTest(g_handler->GetBrowser()); + extension_test::RunTest(g_handler->GetBrowser()); } - (IBAction)testJSExecute:(id)sender { @@ -449,24 +436,9 @@ NSButton* MakeButton(NSRect* rect, NSString* title, NSView* parent) { performance_test::RunTest(g_handler->GetBrowser()); } -- (IBAction)testDialogs:(id)sender { +- (IBAction)testPluginInfo:(id)sender { if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunDialogsTest(g_handler->GetBrowser()); -} - -- (IBAction)testRequest:(id)sender { - if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunRequestTest(g_handler->GetBrowser()); -} - -- (IBAction)testLocalStorage:(id)sender { - if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunLocalStorageTest(g_handler->GetBrowser()); -} - -- (IBAction)testXMLHttpRequest:(id)sender { - if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunXMLHTTPRequestTest(g_handler->GetBrowser()); + RunPluginInfoTest(g_handler->GetBrowser()); } - (IBAction)testWebURLRequest:(id)sender { @@ -479,41 +451,6 @@ NSButton* MakeButton(NSRect* rect, NSString* title, NSView* parent) { RunDOMAccessTest(g_handler->GetBrowser()); } -- (IBAction)testSchemeHandler:(id)sender { - if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunSchemeTest(g_handler->GetBrowser()); -} - -- (IBAction)testPopupWindow:(id)sender { - if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunPopupTest(g_handler->GetBrowser()); -} - -- (IBAction)testAccelerated2DCanvas:(id)sender { - if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunAccelerated2DCanvasTest(g_handler->GetBrowser()); -} - -- (IBAction)testAcceleratedLayers:(id)sender { - if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunAcceleratedLayersTest(g_handler->GetBrowser()); -} - -- (IBAction)testWebGL:(id)sender { - if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunWebGLTest(g_handler->GetBrowser()); -} - -- (IBAction)testDragDrop:(id)sender { - if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunDragDropTest(g_handler->GetBrowser()); -} - -- (IBAction)testGeolocation:(id)sender { - if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunGeolocationTest(g_handler->GetBrowser()); -} - - (IBAction)testZoomIn:(id)sender { if (g_handler.get() && g_handler->GetBrowserHwnd()) { CefRefPtr browser = g_handler->GetBrowser(); @@ -549,11 +486,6 @@ NSButton* MakeButton(NSRect* rect, NSString* title, NSView* parent) { } } -- (IBAction)testPluginInfo:(id)sender { - if (g_handler.get() && g_handler->GetBrowserHwnd()) - RunPluginInfoTest(g_handler->GetBrowser()); -} - - (IBAction)testOffscreenRendering:(id)sender { osrtest::RunTest(false); } @@ -562,6 +494,11 @@ NSButton* MakeButton(NSRect* rect, NSString* title, NSView* parent) { osrtest::RunTest(true); } +- (IBAction)testOtherTests:(id)sender { + if (g_handler.get() && g_handler->GetBrowserHwnd()) + RunOtherTests(g_handler->GetBrowser()); +} + // Sent by the default notification center immediately before the application // terminates. - (void)applicationWillTerminate:(NSNotification *)aNotification { @@ -600,9 +537,11 @@ int main(int argc, char* argv[]) { // Initialize CEF. CefInitialize(settings, app); - // Initialize tests. - InitExtensionTest(); - InitSchemeTest(); + // Register the V8 extension handler. + extension_test::InitTest(); + + // Register the scheme handler. + scheme_test::InitTest(); // Create the application delegate and window. NSObject* delegate = [[ClientAppDelegate alloc] init]; diff --git a/cef1/tests/cefclient/cefclient_win.cpp b/cef1/tests/cefclient/cefclient_win.cpp index b8e99a5a9..b6fb7e71b 100644 --- a/cef1/tests/cefclient/cefclient_win.cpp +++ b/cef1/tests/cefclient/cefclient_win.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Embedded Framework Authors. All rights +// Copyright (c) 2013 The Chromium Embedded Framework Authors. All rights // reserved. Use of this source code is governed by a BSD-style license that // can be found in the LICENSE file. @@ -77,19 +77,19 @@ int APIENTRY wWinMain(HINSTANCE hInstance, CefInitialize(settings, app); // Register the internal client plugin. - InitPluginTest(); + plugin_test::InitTest(); // Register the internal UI client plugin. - InitUIPluginTest(); + uiplugin_test::InitTest(); // Register the internal OSR client plugin. - InitOSRPluginTest(); + osrplugin_test::InitTest(); // Register the V8 extension handler. - InitExtensionTest(); + extension_test::InitTest(); // Register the scheme handler. - InitSchemeTest(); + scheme_test::InitTest(); HACCEL hAccelTable; @@ -441,38 +441,6 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, if (browser.get()) RunGetTextTest(browser); return 0; - case ID_TESTS_JAVASCRIPT_BINDING: // Test the V8 binding handler - if (browser.get()) - RunBindingTest(browser); - return 0; - case ID_TESTS_JAVASCRIPT_EXTENSION: // Test the V8 extension handler - if (browser.get()) - RunExtensionTest(browser); - return 0; - case ID_TESTS_JAVASCRIPT_EXECUTE: // Test execution of javascript - if (browser.get()) - RunJavaScriptExecuteTest(browser); - return 0; - case ID_TESTS_JAVASCRIPT_INVOKE: - if (browser.get()) - RunJavaScriptInvokeTest(browser); - return 0; - case ID_TESTS_PERFORMANCE: // Run performance tests - if (browser.get()) - performance_test::RunTest(browser); - return 0; - case ID_TESTS_DIALOGS: // Run dialogs tests - if (browser.get()) - RunDialogsTest(browser); - return 0; - case ID_TESTS_PLUGIN: // Test the custom plugin - if (browser.get()) - RunPluginTest(browser); - return 0; - case ID_TESTS_PLUGIN_INFO: // Test plugin info - if (browser.get()) - RunPluginInfoTest(browser); - return 0; case ID_TESTS_POPUP: // Test a popup window if (browser.get()) RunPopupTest(browser); @@ -487,56 +455,40 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, return 0; case ID_TESTS_SCHEME_HANDLER: // Test the scheme handler if (browser.get()) - RunSchemeTest(browser); + scheme_test::RunTest(browser); return 0; - case ID_TESTS_UIAPP: // Test the UI app + case ID_TESTS_JAVASCRIPT_BINDING: // Test the V8 binding handler if (browser.get()) - RunUIPluginTest(browser); + RunBindingTest(browser); return 0; - case ID_TESTS_OSRAPP: // Test the OSR app + case ID_TESTS_JAVASCRIPT_EXTENSION: // Test the V8 extension handler if (browser.get()) - RunOSRPluginTest(browser, false); + extension_test::RunTest(browser); return 0; - case ID_TESTS_TRANSPARENT_OSRAPP: // Test the OSR app with transparency + case ID_TESTS_JAVASCRIPT_EXECUTE: // Test execution of javascript if (browser.get()) - RunOSRPluginTest(browser, true); + RunJavaScriptExecuteTest(browser); return 0; - case ID_TESTS_DOMACCESS: // Test DOM access + case ID_TESTS_JAVASCRIPT_INVOKE: if (browser.get()) - RunDOMAccessTest(browser); + RunJavaScriptInvokeTest(browser); return 0; - case ID_TESTS_LOCALSTORAGE: // Test localStorage + case ID_TESTS_PERFORMANCE: // Run performance tests if (browser.get()) - RunLocalStorageTest(browser); + performance_test::RunTest(browser); return 0; - case ID_TESTS_ACCELERATED2DCANVAS: // Test accelerated 2d canvas + case ID_TESTS_PLUGIN_INFO: // Test plugin info if (browser.get()) - RunAccelerated2DCanvasTest(browser); - return 0; - case ID_TESTS_ACCELERATEDLAYERS: // Test accelerated layers - if (browser.get()) - RunAcceleratedLayersTest(browser); - return 0; - case ID_TESTS_WEBGL: // Test WebGL - if (browser.get()) - RunWebGLTest(browser); - return 0; - case ID_TESTS_DRAGDROP: // Test drag & drop - if (browser.get()) - RunDragDropTest(browser); - return 0; - case ID_TESTS_GEOLOCATION: // Test geolocation - if (browser.get()) - RunGeolocationTest(browser); - return 0; - case ID_TESTS_XMLHTTPREQUEST: // Test XMLHttpRequest - if (browser.get()) - RunXMLHTTPRequestTest(browser); + RunPluginInfoTest(browser); return 0; case ID_TESTS_WEBURLREQUEST: if (browser.get()) RunWebURLRequestTest(browser); return 0; + case ID_TESTS_DOMACCESS: // Test DOM access + if (browser.get()) + RunDOMAccessTest(browser); + return 0; case ID_TESTS_ZOOM_IN: if (browser.get()) browser->SetZoomLevel(browser->GetZoomLevel() + 0.5); @@ -557,14 +509,30 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, if (browser.get()) browser->CloseDevTools(); return 0; - case ID_TESTS_MODALDIALOG: + case ID_TESTS_PLUGIN: // Test the custom plugin if (browser.get()) - RunModalDialogTest(browser); + plugin_test::RunTest(browser); + return 0; + case ID_TESTS_UIAPP: // Test the UI app + if (browser.get()) + uiplugin_test::RunTest(browser); + return 0; + case ID_TESTS_OSRAPP: // Test the OSR app + if (browser.get()) + osrplugin_test::RunTest(browser, false); + return 0; + case ID_TESTS_TRANSPARENT_OSRAPP: // Test the OSR app with transparency + if (browser.get()) + osrplugin_test::RunTest(browser, true); return 0; case ID_TESTS_GETIMAGE: if (browser.get()) RunGetImageTest(browser); return 0; + case ID_TESTS_OTHER_TESTS: + if (browser.get()) + RunOtherTests(browser); + return 0; } break; } diff --git a/cef1/tests/cefclient/client_handler.cpp b/cef1/tests/cefclient/client_handler.cpp index 326ac3972..766760d8b 100644 --- a/cef1/tests/cefclient/client_handler.cpp +++ b/cef1/tests/cefclient/client_handler.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Embedded Framework Authors. All rights +// Copyright (c) 2013 The Chromium Embedded Framework Authors. All rights // reserved. Use of this source code is governed by a BSD-style license that // can be found in the LICENSE file. @@ -9,13 +9,66 @@ #include "include/cef_browser.h" #include "include/cef_command_line.h" #include "include/cef_frame.h" +#include "include/cef_url.h" #include "cefclient/binding_test.h" #include "cefclient/cefclient.h" #include "cefclient/cefclient_switches.h" #include "cefclient/download_handler.h" #include "cefclient/performance_test.h" +#include "cefclient/resource_util.h" #include "cefclient/string_util.h" +#if defined(OS_WIN) +#include "cefclient/plugin_test.h" +#endif + +namespace { + +const char kTestOrigin[] = "http://tests/"; + +// Retrieve the file name and mime type based on the specified url. +bool ParseTestUrl(const std::string& url, + std::string* file_name, + std::string* mime_type) { + // Retrieve the path component. + CefURLParts parts; + CefParseURL(url, parts); + std::string file = CefString(&parts.path); + if (file.size() < 2) + return false; + + // Remove the leading slash. + file = file.substr(1); + + // Verify that the file name is valid. + for(size_t i = 0; i < file.size(); ++i) { + const char c = file[i]; + if (!isalpha(c) && !isdigit(c) && c != '_' && c != '.') + return false; + } + + // Determine the mime type based on the file extension, if any. + size_t pos = file.rfind("."); + if (pos != std::string::npos) { + std::string ext = file.substr(pos + 1); + if (ext == "html") + *mime_type = "text/html"; + else if (ext == "png") + *mime_type = "image/png"; + else + return false; + } else { + // Default to an html extension if none is specified. + *mime_type = "text/html"; + file += ".html"; + } + + *file_name = file; + return true; +} + +} // namespace + ClientHandler::ClientHandler() : m_MainHwnd(NULL), m_BrowserHwnd(NULL), @@ -25,6 +78,8 @@ ClientHandler::ClientHandler() m_StopHwnd(NULL), m_ReloadHwnd(NULL), m_bFormElementHasFocus(false) { + CreateRequestDelegates(request_delegates_); + CefRefPtr commandLine = AppGetCommandLine(); if (commandLine.get()) { if (commandLine->HasSwitch(cefclient::kUrl)) @@ -132,6 +187,53 @@ bool ClientHandler::OnLoadError(CefRefPtr browser, return false; } +bool ClientHandler::OnBeforeResourceLoad( + CefRefPtr browser, + CefRefPtr request, + CefString& redirectUrl, + CefRefPtr& resourceStream, + CefRefPtr response, + int loadFlags) { + std::string url = request->GetURL(); + if (url.find(kTestOrigin) == 0) { + // Handle URLs in the test origin. + std::string file_name, mime_type; + if (ParseTestUrl(url, &file_name, &mime_type)) { + if (file_name == "request.html") { + // Show the request contents. + std::string dump; + DumpRequestContents(request, dump); + resourceStream = CefStreamReader::CreateForData( + static_cast(const_cast(dump.c_str())), + dump.size()); + response->SetMimeType("text/plain"); + response->SetStatus(200); + } else { + // Load the resource from file. + resourceStream = + GetBinaryResourceReader(file_name.c_str()); + if (resourceStream.get()) { + response->SetMimeType(mime_type); + response->SetStatus(200); + } + } + } + } + + bool handled = false; + + // Execute delegate callbacks. + RequestDelegateSet::iterator it = request_delegates_.begin(); + for (; it != request_delegates_.end(); ++it) { + handled = (*it)->OnBeforeResourceLoad(this, browser, request, redirectUrl, + resourceStream, response, loadFlags); + if (handled || !redirectUrl.empty() || resourceStream.get()) + break; + } + + return handled; +} + bool ClientHandler::GetDownloadHandler(CefRefPtr browser, const CefString& mimeType, const CefString& fileName, @@ -381,3 +483,12 @@ CefRefPtr ClientHandler::GetDOMVisitor(const std::string& path) { return it->second; return NULL; } + + +// static +void ClientHandler::CreateRequestDelegates(RequestDelegateSet& delegates) { +#if defined(OS_WIN) + // Create the plugin test delegates. + plugin_test::CreateRequestDelegates(delegates); +#endif +} diff --git a/cef1/tests/cefclient/client_handler.h b/cef1/tests/cefclient/client_handler.h index 1f6e5ae78..9bfefd33a 100644 --- a/cef1/tests/cefclient/client_handler.h +++ b/cef1/tests/cefclient/client_handler.h @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Embedded Framework Authors. All rights +// Copyright (c) 2013 The Chromium Embedded Framework Authors. All rights // reserved. Use of this source code is governed by a BSD-style license that // can be found in the LICENSE file. @@ -7,6 +7,7 @@ #pragma once #include +#include #include #include "include/cef_client.h" #include "cefclient/download_handler.h" @@ -33,6 +34,25 @@ class ClientHandler : public CefClient, public CefGeolocationHandler, public DownloadListener { public: + // Interface for request handler delegates. Do not perform work in the + // RequestDelegate constructor. + class RequestDelegate : public virtual CefBase { + public: + // Called to handle a resource load. + virtual bool OnBeforeResourceLoad( + CefRefPtr handler, + CefRefPtr browser, + CefRefPtr request, + CefString& redirectUrl, + CefRefPtr& resourceStream, + CefRefPtr response, + int loadFlags) { + return false; + } + }; + + typedef std::set > RequestDelegateSet; + ClientHandler(); virtual ~ClientHandler(); @@ -96,11 +116,11 @@ class ClientHandler : public CefClient, // CefRequestHandler methods virtual bool OnBeforeResourceLoad(CefRefPtr browser, - CefRefPtr request, - CefString& redirectUrl, - CefRefPtr& resourceStream, - CefRefPtr response, - int loadFlags) OVERRIDE; + CefRefPtr request, + CefString& redirectUrl, + CefRefPtr& resourceStream, + CefRefPtr response, + int loadFlags) OVERRIDE; virtual bool GetDownloadHandler(CefRefPtr browser, const CefString& mimeType, const CefString& fileName, @@ -215,6 +235,9 @@ class ClientHandler : public CefClient, void SetLoading(bool isLoading); void SetNavState(bool canGoBack, bool canGoForward); + // Create all of RequestDelegateSet objects. + static void CreateRequestDelegates(RequestDelegateSet& delegates); + // The child browser window CefRefPtr m_Browser; @@ -249,6 +272,9 @@ class ClientHandler : public CefClient, // The URL to be loaded at application startup. std::string m_StartupURL; + // Registered delegates. + RequestDelegateSet request_delegates_; + // Include the default reference counting implementation. IMPLEMENT_REFCOUNTING(ClientHandler); // Include the default locking implementation. diff --git a/cef1/tests/cefclient/client_handler_gtk.cpp b/cef1/tests/cefclient/client_handler_gtk.cpp index 96e73ce0a..4f6903b6a 100644 --- a/cef1/tests/cefclient/client_handler_gtk.cpp +++ b/cef1/tests/cefclient/client_handler_gtk.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Embedded Framework Authors. All rights +// Copyright (c) 2013 The Chromium Embedded Framework Authors. All rights // reserved. Use of this source code is governed by a BSD-style license that // can be found in the LICENSE file. @@ -7,9 +7,6 @@ #include "cefclient/client_handler.h" #include "include/cef_browser.h" #include "include/cef_frame.h" -#include "cefclient/performance_test.h" -#include "cefclient/resource_util.h" -#include "cefclient/string_util.h" // ClientHandler::ClientLifeSpanHandler implementation bool ClientHandler::OnBeforePopup(CefRefPtr parentBrowser, @@ -23,59 +20,6 @@ bool ClientHandler::OnBeforePopup(CefRefPtr parentBrowser, return false; } -bool ClientHandler::OnBeforeResourceLoad(CefRefPtr browser, - CefRefPtr request, - CefString& redirectUrl, - CefRefPtr& resourceStream, - CefRefPtr response, - int loadFlags) { - REQUIRE_IO_THREAD(); - - std::string url = request->GetURL(); - - if (url == "http://tests/request") { - // Show the request contents - std::string dump; - DumpRequestContents(request, dump); - resourceStream = CefStreamReader::CreateForData( - static_cast(const_cast(dump.c_str())), - dump.size()); - response->SetMimeType("text/plain"); - response->SetStatus(200); - } else if (strstr(url.c_str(), "/ps_logo2.png") != NULL) { - // Any time we find "ps_logo2.png" in the URL substitute in our own image - resourceStream = GetBinaryResourceReader("logo.png"); - response->SetMimeType("image/png"); - response->SetStatus(200); - } else if (url == "http://tests/localstorage") { - // Show the localstorage contents - resourceStream = GetBinaryResourceReader("localstorage.html"); - response->SetMimeType("text/html"); - response->SetStatus(200); - } else if (url == "http://tests/xmlhttprequest") { - // Show the xmlhttprequest HTML contents - resourceStream = GetBinaryResourceReader("xmlhttprequest.html"); - response->SetMimeType("text/html"); - response->SetStatus(200); - } else if (url == "http://tests/domaccess") { - // Show the domaccess HTML contents - resourceStream = GetBinaryResourceReader("domaccess.html"); - response->SetMimeType("text/html"); - response->SetStatus(200); - } else if (url == performance_test::kTestUrl) { - resourceStream = GetBinaryResourceReader("performance.html"); - response->SetMimeType("text/html"); - response->SetStatus(200); - } else if (url == "http://tests/dialogs") { - // Show the dialogs HTML contents - resourceStream = GetBinaryResourceReader("dialogs.html"); - response->SetMimeType("text/html"); - response->SetStatus(200); - } - - return false; -} - void ClientHandler::OnAddressChange(CefRefPtr browser, CefRefPtr frame, const CefString& url) { diff --git a/cef1/tests/cefclient/client_handler_mac.mm b/cef1/tests/cefclient/client_handler_mac.mm index 3ab886b5e..e57c8f14e 100644 --- a/cef1/tests/cefclient/client_handler_mac.mm +++ b/cef1/tests/cefclient/client_handler_mac.mm @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Embedded Framework Authors. All rights +// Copyright (c) 2013 The Chromium Embedded Framework Authors. All rights // reserved. Use of this source code is governed by a BSD-style license that // can be found in the LICENSE file. @@ -8,9 +8,6 @@ #include "include/cef_browser.h" #include "include/cef_frame.h" #include "cefclient/cefclient.h" -#include "cefclient/performance_test.h" -#include "cefclient/resource_util.h" -#include "cefclient/string_util.h" #ifdef TEST_REDIRECT_POPUP_URLS #include "cefclient/client_popup_handler.h" @@ -38,58 +35,6 @@ bool ClientHandler::OnBeforePopup(CefRefPtr parentBrowser, return false; } -bool ClientHandler::OnBeforeResourceLoad(CefRefPtr browser, - CefRefPtr request, - CefString& redirectUrl, - CefRefPtr& resourceStream, - CefRefPtr response, - int loadFlags) { - REQUIRE_IO_THREAD(); - - std::string url = request->GetURL(); - if (url == "http://tests/request") { - // Show the request contents - std::string dump; - DumpRequestContents(request, dump); - resourceStream = CefStreamReader::CreateForData( - static_cast(const_cast(dump.c_str())), - dump.size()); - response->SetMimeType("text/plain"); - response->SetStatus(200); - } else if (strstr(url.c_str(), "/ps_logo2.png") != NULL) { - // Any time we find "ps_logo2.png" in the URL substitute in our own image - resourceStream = GetBinaryResourceReader("logo.png"); - response->SetMimeType("image/png"); - response->SetStatus(200); - } else if (url == "http://tests/localstorage") { - // Show the localstorage contents - resourceStream = GetBinaryResourceReader("localstorage.html"); - response->SetMimeType("text/html"); - response->SetStatus(200); - } else if (url == "http://tests/xmlhttprequest") { - // Show the xmlhttprequest HTML contents - resourceStream = GetBinaryResourceReader("xmlhttprequest.html"); - response->SetMimeType("text/html"); - response->SetStatus(200); - } else if (url == "http://tests/domaccess") { - // Show the domaccess HTML contents - resourceStream = GetBinaryResourceReader("domaccess.html"); - response->SetMimeType("text/html"); - response->SetStatus(200); - } else if (url == performance_test::kTestUrl) { - resourceStream = GetBinaryResourceReader("performance.html"); - response->SetMimeType("text/html"); - response->SetStatus(200); - } else if (url == "http://tests/dialogs") { - // Show the dialogs HTML contents - resourceStream = GetBinaryResourceReader("dialogs.html"); - response->SetMimeType("text/html"); - response->SetStatus(200); - } - - return false; -} - void ClientHandler::OnAddressChange(CefRefPtr browser, CefRefPtr frame, const CefString& url) { diff --git a/cef1/tests/cefclient/client_handler_win.cpp b/cef1/tests/cefclient/client_handler_win.cpp index 2a3795c51..c9f93e4bb 100644 --- a/cef1/tests/cefclient/client_handler_win.cpp +++ b/cef1/tests/cefclient/client_handler_win.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Embedded Framework Authors. All rights +// Copyright (c) 2013 The Chromium Embedded Framework Authors. All rights // reserved. Use of this source code is governed by a BSD-style license that // can be found in the LICENSE file. @@ -35,101 +35,6 @@ bool ClientHandler::OnBeforePopup(CefRefPtr parentBrowser, return false; } -bool ClientHandler::OnBeforeResourceLoad(CefRefPtr browser, - CefRefPtr request, - CefString& redirectUrl, - CefRefPtr& resourceStream, - CefRefPtr response, - int loadFlags) { - REQUIRE_IO_THREAD(); - - std::string url = request->GetURL(); - if (url == "http://tests/request") { - // Show the request contents - std::string dump; - DumpRequestContents(request, dump); - resourceStream = CefStreamReader::CreateForData( - static_cast(const_cast(dump.c_str())), - dump.size()); - response->SetMimeType("text/plain"); - response->SetStatus(200); - } else if (strstr(url.c_str(), "/ps_logo2.png") != NULL) { - // Any time we find "ps_logo2.png" in the URL substitute in our own image - resourceStream = GetBinaryResourceReader(IDS_LOGO); - response->SetMimeType("image/png"); - response->SetStatus(200); - } else if (url == "http://tests/uiapp") { - // Show the uiapp contents - resourceStream = GetBinaryResourceReader(IDS_UIPLUGIN); - response->SetMimeType("text/html"); - response->SetStatus(200); - } else if (url == "http://tests/osrapp") { - // Show the osrapp contents - resourceStream = GetBinaryResourceReader(IDS_OSRPLUGIN); - response->SetMimeType("text/html"); - response->SetStatus(200); - } else if (url == "http://tests/localstorage") { - // Show the localstorage contents - resourceStream = GetBinaryResourceReader(IDS_LOCALSTORAGE); - response->SetMimeType("text/html"); - response->SetStatus(200); - } else if (url == "http://tests/xmlhttprequest") { - // Show the xmlhttprequest HTML contents - resourceStream = GetBinaryResourceReader(IDS_XMLHTTPREQUEST); - response->SetMimeType("text/html"); - response->SetStatus(200); - } else if (url == "http://tests/domaccess") { - // Show the domaccess HTML contents - resourceStream = GetBinaryResourceReader(IDS_DOMACCESS); - response->SetMimeType("text/html"); - response->SetStatus(200); - } else if (strstr(url.c_str(), "/logoball.png") != NULL) { - // Load the "logoball.png" image resource. - resourceStream = GetBinaryResourceReader(IDS_LOGOBALL); - response->SetMimeType("image/png"); - response->SetStatus(200); - } else if (url == "http://tests/modalmain") { - resourceStream = GetBinaryResourceReader(IDS_MODALMAIN); - response->SetMimeType("text/html"); - response->SetStatus(200); - } else if (url == "http://tests/modaldialog") { - resourceStream = GetBinaryResourceReader(IDS_MODALDIALOG); - response->SetMimeType("text/html"); - response->SetStatus(200); - } else if (url == "http://tests/transparency") { - resourceStream = GetBinaryResourceReader(IDS_TRANSPARENCY); - response->SetMimeType("text/html"); - response->SetStatus(200); - } else if (url == "http://tests/plugin") { - std::string html = - "\n" - "Client Plugin loaded by Mime Type:
\n" - "\n" - "

Client Plugin loaded by File Extension:
\n" - "\n" - // Add some extra space below the plugin to allow scrolling. - "
 
\n" - ""; - - resourceStream = CefStreamReader::CreateForData( - static_cast(const_cast(html.c_str())), - html.size()); - response->SetMimeType("text/html"); - response->SetStatus(200); - } else if (url == performance_test::kTestUrl) { - resourceStream = GetBinaryResourceReader(IDS_PERFORMANCE); - response->SetMimeType("text/html"); - response->SetStatus(200); - } else if (url == "http://tests/dialogs") { - // Show the dialogs HTML contents - resourceStream = GetBinaryResourceReader(IDS_DIALOGS); - response->SetMimeType("text/html"); - response->SetStatus(200); - } - - return false; -} - void ClientHandler::OnAddressChange(CefRefPtr browser, CefRefPtr frame, const CefString& url) { diff --git a/cef1/tests/cefclient/extension_test.cpp b/cef1/tests/cefclient/extension_test.cpp index d1d03ae41..c7bb7b9bf 100644 --- a/cef1/tests/cefclient/extension_test.cpp +++ b/cef1/tests/cefclient/extension_test.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Embedded Framework Authors. All rights +// Copyright (c) 2013 The Chromium Embedded Framework Authors. All rights // reserved. Use of this source code is governed by a BSD-style license that // can be found in the LICENSE file. @@ -10,6 +10,10 @@ #include "include/cef_v8.h" #include "cefclient/resource_util.h" +namespace extension_test { + +namespace { + // Implementation of the V8 handler class for the "cef.test" extension. class ClientV8ExtensionHandler : public CefV8Handler { public: @@ -64,8 +68,9 @@ class ClientV8ExtensionHandler : public CefV8Handler { IMPLEMENT_REFCOUNTING(ClientV8ExtensionHandler); }; +} // namespace -void InitExtensionTest() { +void InitTest() { // Register a V8 extension with the below JavaScript code that calls native // methods implemented in ClientV8ExtensionHandler. std::string code = "var cef;" @@ -90,7 +95,7 @@ void InitExtensionTest() { CefRegisterExtension("v8/test", code, new ClientV8ExtensionHandler()); } -void RunExtensionTest(CefRefPtr browser) { +void RunTest(CefRefPtr browser) { std::string html = "ClientV8ExtensionHandler says:
"
     "