summaryrefslogtreecommitdiffstats
path: root/webkit
diff options
context:
space:
mode:
authoryurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-18 13:29:39 +0000
committeryurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-18 13:29:39 +0000
commit7869f47d58149dc27a2e42de61d32f459c04d241 (patch)
tree6146a50b3d11e69437a6586251c8b3fbde106b6f /webkit
parent6e746ddc52d4557648d76ac8125604396ee39726 (diff)
downloadchromium_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')
-rw-r--r--webkit/tools/test_shell/layout_test_controller.cc7
-rw-r--r--webkit/tools/test_shell/layout_test_controller.h3
-rw-r--r--webkit/tools/test_shell/test_shell_devtools_agent.cc29
-rw-r--r--webkit/tools/test_shell/test_shell_devtools_agent.h3
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);