| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "config.h" | 5 #include "config.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "Document.h" | 9 #include "Document.h" |
| 10 #include "DOMWindow.h" | 10 #include "DOMWindow.h" |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 115 dev_tools_host_->AddProtoFunction( | 115 dev_tools_host_->AddProtoFunction( |
| 116 "activateWindow", | 116 "activateWindow", |
| 117 WebDevToolsClientImpl::JsActivateWindow); | 117 WebDevToolsClientImpl::JsActivateWindow); |
| 118 dev_tools_host_->Build(); | 118 dev_tools_host_->Build(); |
| 119 } | 119 } |
| 120 | 120 |
| 121 WebDevToolsClientImpl::~WebDevToolsClientImpl() { | 121 WebDevToolsClientImpl::~WebDevToolsClientImpl() { |
| 122 } | 122 } |
| 123 | 123 |
| 124 void WebDevToolsClientImpl::DispatchMessageFromAgent( | 124 void WebDevToolsClientImpl::DispatchMessageFromAgent( |
| 125 const std::string& raw_msg) { | 125 const std::string& class_name, |
| 126 const std::string& method_name, |
| 127 const std::string& raw_msg) { |
| 128 std::string expr = StringPrintf( |
| 129 "devtools.dispatch('%s','%s',%s)", |
| 130 class_name.c_str(), |
| 131 method_name.c_str(), |
| 132 raw_msg.c_str()); |
| 126 if (!loaded_) { | 133 if (!loaded_) { |
| 127 pending_incoming_messages_.append(raw_msg); | 134 pending_incoming_messages_.append(expr); |
| 128 return; | 135 return; |
| 129 } | 136 } |
| 130 std::string expr = StringPrintf("devtools.dispatch(%s)", raw_msg.c_str()); | 137 ExecuteScript(expr); |
| 138 } |
| 139 |
| 140 void WebDevToolsClientImpl::ExecuteScript(const std::string& expr) { |
| 131 web_view_impl_->GetMainFrame()->ExecuteScript( | 141 web_view_impl_->GetMainFrame()->ExecuteScript( |
| 132 WebScriptSource(WebString::fromUTF8(expr))); | 142 WebScriptSource(WebString::fromUTF8(expr))); |
| 133 } | 143 } |
| 134 | 144 |
| 135 void WebDevToolsClientImpl::SendRpcMessage(const std::string& raw_msg) { | 145 |
| 136 delegate_->SendMessageToAgent(raw_msg); | 146 void WebDevToolsClientImpl::SendRpcMessage(const std::string& class_name, |
| 147 const std::string& method_name, |
| 148 const std::string& raw_msg) { |
| 149 delegate_->SendMessageToAgent(class_name, method_name, raw_msg); |
| 137 } | 150 } |
| 138 | 151 |
| 139 // static | 152 // static |
| 140 v8::Handle<v8::Value> WebDevToolsClientImpl::JsAddSourceToFrame( | 153 v8::Handle<v8::Value> WebDevToolsClientImpl::JsAddSourceToFrame( |
| 141 const v8::Arguments& args) { | 154 const v8::Arguments& args) { |
| 142 if (args.Length() < 2) { | 155 if (args.Length() < 2) { |
| 143 return v8::Undefined(); | 156 return v8::Undefined(); |
| 144 } | 157 } |
| 145 | 158 |
| 146 v8::TryCatch exception_catcher; | 159 v8::TryCatch exception_catcher; |
| (...skipping 26 matching lines...) Expand all Loading... |
| 173 | 186 |
| 174 // Grant the devtools page the ability to have source view iframes. | 187 // Grant the devtools page the ability to have source view iframes. |
| 175 Page* page = V8Proxy::retrieveFrameForEnteredContext()->page(); | 188 Page* page = V8Proxy::retrieveFrameForEnteredContext()->page(); |
| 176 SecurityOrigin* origin = page->mainFrame()->domWindow()->securityOrigin(); | 189 SecurityOrigin* origin = page->mainFrame()->domWindow()->securityOrigin(); |
| 177 origin->grantUniversalAccess(); | 190 origin->grantUniversalAccess(); |
| 178 | 191 |
| 179 for (Vector<std::string>::iterator it = | 192 for (Vector<std::string>::iterator it = |
| 180 client->pending_incoming_messages_.begin(); | 193 client->pending_incoming_messages_.begin(); |
| 181 it != client->pending_incoming_messages_.end(); | 194 it != client->pending_incoming_messages_.end(); |
| 182 ++it) { | 195 ++it) { |
| 183 client->DispatchMessageFromAgent(*it); | 196 client->ExecuteScript(*it); |
| 184 } | 197 } |
| 185 client->pending_incoming_messages_.clear(); | 198 client->pending_incoming_messages_.clear(); |
| 186 return v8::Undefined(); | 199 return v8::Undefined(); |
| 187 } | 200 } |
| 188 | 201 |
| 189 // static | 202 // static |
| 190 v8::Handle<v8::Value> WebDevToolsClientImpl::JsActivateWindow( | 203 v8::Handle<v8::Value> WebDevToolsClientImpl::JsActivateWindow( |
| 191 const v8::Arguments& args) { | 204 const v8::Arguments& args) { |
| 192 WebDevToolsClientImpl* client = static_cast<WebDevToolsClientImpl*>( | 205 WebDevToolsClientImpl* client = static_cast<WebDevToolsClientImpl*>( |
| 193 v8::External::Cast(*args.Data())->Value()); | 206 v8::External::Cast(*args.Data())->Value()); |
| 194 client->delegate_->ActivateWindow(); | 207 client->delegate_->ActivateWindow(); |
| 195 return v8::Undefined(); | 208 return v8::Undefined(); |
| 196 } | 209 } |
| OLD | NEW |