diff options
author | yurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-18 13:29:39 +0000 |
---|---|---|
committer | yurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-18 13:29:39 +0000 |
commit | 7869f47d58149dc27a2e42de61d32f459c04d241 (patch) | |
tree | 6146a50b3d11e69437a6586251c8b3fbde106b6f /webkit | |
parent | 6e746ddc52d4557648d76ac8125604396ee39726 (diff) | |
download | chromium_src-7869f47d58149dc27a2e42de61d32f459c04d241.zip chromium_src-7869f47d58149dc27a2e42de61d32f459c04d241.tar.gz chromium_src-7869f47d58149dc27a2e42de61d32f459c04d241.tar.bz2 |
DevTools:
* allow to close devtools window from tests.
* implement TestShellDevToolsAgent::createClientMessageLoop
Review URL: http://codereview.chromium.org/2825011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@50233 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
4 files changed, 42 insertions, 0 deletions
diff --git a/webkit/tools/test_shell/layout_test_controller.cc b/webkit/tools/test_shell/layout_test_controller.cc index 392767fa..79d3dff 100644 --- a/webkit/tools/test_shell/layout_test_controller.cc +++ b/webkit/tools/test_shell/layout_test_controller.cc @@ -104,6 +104,7 @@ LayoutTestController::LayoutTestController(TestShell* shell) : BindMethod("objCIdentityIsEqual", &LayoutTestController::objCIdentityIsEqual); BindMethod("setAlwaysAcceptCookies", &LayoutTestController::setAlwaysAcceptCookies); BindMethod("showWebInspector", &LayoutTestController::showWebInspector); + BindMethod("closeWebInspector", &LayoutTestController::closeWebInspector); BindMethod("setWindowIsKey", &LayoutTestController::setWindowIsKey); BindMethod("setTabKeyCyclesThroughElements", &LayoutTestController::setTabKeyCyclesThroughElements); BindMethod("setUserStyleSheetLocation", &LayoutTestController::setUserStyleSheetLocation); @@ -584,6 +585,12 @@ void LayoutTestController::showWebInspector( result->SetNull(); } +void LayoutTestController::closeWebInspector( + const CppArgumentList& args, CppVariant* result) { + shell_->CloseDevTools(); + result->SetNull(); +} + void LayoutTestController::setWindowIsKey( const CppArgumentList& args, CppVariant* result) { if (args.size() > 0 && args[0].isBool()) { diff --git a/webkit/tools/test_shell/layout_test_controller.h b/webkit/tools/test_shell/layout_test_controller.h index 2809e4d..8394d8b 100644 --- a/webkit/tools/test_shell/layout_test_controller.h +++ b/webkit/tools/test_shell/layout_test_controller.h @@ -102,6 +102,9 @@ class LayoutTestController : public CppBoundClass { // Shows DevTools window. void showWebInspector(const CppArgumentList& args, CppVariant* result); + // Close DevTools window. + void closeWebInspector(const CppArgumentList& args, CppVariant* result); + // Gives focus to the window. void setWindowIsKey(const CppArgumentList& args, CppVariant* result); diff --git a/webkit/tools/test_shell/test_shell_devtools_agent.cc b/webkit/tools/test_shell/test_shell_devtools_agent.cc index 1767d9c..b692459 100644 --- a/webkit/tools/test_shell/test_shell_devtools_agent.cc +++ b/webkit/tools/test_shell/test_shell_devtools_agent.cc @@ -18,6 +18,30 @@ using WebKit::WebDevToolsMessageData; using WebKit::WebString; using WebKit::WebView; +namespace { + +class WebKitClientMessageLoopImpl + : public WebKit::WebDevToolsAgentClient::WebKitClientMessageLoop { + public: + WebKitClientMessageLoopImpl() : message_loop_(MessageLoop::current()) { } + virtual ~WebKitClientMessageLoopImpl() { + message_loop_ = NULL; + } + virtual void run() { + bool old_state = message_loop_->NestableTasksAllowed(); + message_loop_->SetNestableTasksAllowed(true); + message_loop_->Run(); + message_loop_->SetNestableTasksAllowed(old_state); + } + virtual void quitNow() { + message_loop_->QuitNow(); + } + private: + MessageLoop* message_loop_; +}; + +} // namespace + // static void TestShellDevToolsAgent::DispatchMessageLoop() { MessageLoop* current = MessageLoop::current(); @@ -78,6 +102,11 @@ WebCString TestShellDevToolsAgent::debuggerScriptSource() { return WebCString(debuggerScriptjs.data(), debuggerScriptjs.length()); } +WebKit::WebDevToolsAgentClient::WebKitClientMessageLoop* + TestShellDevToolsAgent::createClientMessageLoop() { + return new WebKitClientMessageLoopImpl(); +} + void TestShellDevToolsAgent::AsyncCall(const TestShellDevToolsCallArgs &args) { MessageLoop::current()->PostDelayedTask( FROM_HERE, diff --git a/webkit/tools/test_shell/test_shell_devtools_agent.h b/webkit/tools/test_shell/test_shell_devtools_agent.h index 7c5a2e3..8020876 100644 --- a/webkit/tools/test_shell/test_shell_devtools_agent.h +++ b/webkit/tools/test_shell/test_shell_devtools_agent.h @@ -37,6 +37,9 @@ class TestShellDevToolsAgent : public WebKit::WebDevToolsAgentClient { virtual WebKit::WebCString injectedScriptDispatcherSource(); virtual WebKit::WebCString debuggerScriptSource(); + virtual WebKit::WebDevToolsAgentClient::WebKitClientMessageLoop* + createClientMessageLoop(); + void AsyncCall(const TestShellDevToolsCallArgs& args); void attach(TestShellDevToolsClient* client); |