| 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" |
| 11 #include "Frame.h" | 11 #include "Frame.h" |
| 12 #include "InspectorBackend.h" | 12 #include "InspectorBackend.h" |
| 13 #include "InspectorController.h" | 13 #include "InspectorController.h" |
| 14 #include "Node.h" | 14 #include "Node.h" |
| 15 #include "Page.h" | 15 #include "Page.h" |
| 16 #include "PlatformString.h" | 16 #include "PlatformString.h" |
| 17 #include "SecurityOrigin.h" | 17 #include "SecurityOrigin.h" |
| 18 #include "Settings.h" | 18 #include "Settings.h" |
| 19 #include "V8Binding.h" | 19 #include "V8Binding.h" |
| 20 #include "V8CustomBinding.h" | 20 #include "V8CustomBinding.h" |
| 21 #include "V8Proxy.h" | 21 #include "V8Proxy.h" |
| 22 #include "V8Utilities.h" | 22 #include "V8Utilities.h" |
| 23 #include <wtf/OwnPtr.h> | 23 #include <wtf/OwnPtr.h> |
| 24 #include <wtf/Vector.h> | 24 #include <wtf/Vector.h> |
| 25 #undef LOG | 25 #undef LOG |
| 26 | 26 |
| 27 #include "base/string_util.h" | 27 #include "webkit/api/public/WebDevtoolsFrontendClient.h" |
| 28 #include "webkit/api/public/WebFrame.h" | 28 #include "webkit/api/public/WebFrame.h" |
| 29 #include "webkit/api/public/WebScriptSource.h" | 29 #include "webkit/api/public/WebScriptSource.h" |
| 30 #include "webkit/glue/devtools/bound_object.h" | 30 #include "webkit/glue/devtools/bound_object.h" |
| 31 #include "webkit/glue/devtools/debugger_agent.h" | 31 #include "webkit/glue/devtools/debugger_agent.h" |
| 32 #include "webkit/glue/devtools/devtools_rpc_js.h" | 32 #include "webkit/glue/devtools/devtools_rpc_js.h" |
| 33 #include "webkit/glue/devtools/tools_agent.h" | 33 #include "webkit/glue/devtools/tools_agent.h" |
| 34 #include "webkit/glue/glue_util.h" | 34 #include "webkit/glue/glue_util.h" |
| 35 #include "webkit/glue/webdevtoolsclient_delegate.h" | 35 #include "webkit/glue/webdevtoolsfrontend_impl.h" |
| 36 #include "webkit/glue/webdevtoolsclient_impl.h" | |
| 37 #include "webkit/glue/webview_impl.h" | 36 #include "webkit/glue/webview_impl.h" |
| 38 | 37 |
| 39 using namespace WebCore; | 38 using namespace WebCore; |
| 39 using WebKit::WebDevToolsFrontend; |
| 40 using WebKit::WebDevToolsFrontendClient; |
| 40 using WebKit::WebFrame; | 41 using WebKit::WebFrame; |
| 41 using WebKit::WebScriptSource; | 42 using WebKit::WebScriptSource; |
| 42 using WebKit::WebString; | 43 using WebKit::WebString; |
| 43 using WebKit::WebView; | 44 using WebKit::WebView; |
| 44 | 45 |
| 45 static v8::Local<v8::String> ToV8String(const String& s) { | 46 static v8::Local<v8::String> ToV8String(const String& s) { |
| 46 if (s.isNull()) | 47 if (s.isNull()) |
| 47 return v8::Local<v8::String>(); | 48 return v8::Local<v8::String>(); |
| 48 | 49 |
| 49 return v8::String::New(reinterpret_cast<const uint16_t*>(s.characters()), | 50 return v8::String::New(reinterpret_cast<const uint16_t*>(s.characters()), |
| (...skipping 11 matching lines...) Expand all Loading... |
| 61 String mime_type; | 62 String mime_type; |
| 62 RefPtr<Node> frame; | 63 RefPtr<Node> frame; |
| 63 }; | 64 }; |
| 64 | 65 |
| 65 ToolsAgentNativeDelegateImpl(WebFrameImpl* frame) : frame_(frame) {} | 66 ToolsAgentNativeDelegateImpl(WebFrameImpl* frame) : frame_(frame) {} |
| 66 virtual ~ToolsAgentNativeDelegateImpl() {} | 67 virtual ~ToolsAgentNativeDelegateImpl() {} |
| 67 | 68 |
| 68 // ToolsAgentNativeDelegate implementation. | 69 // ToolsAgentNativeDelegate implementation. |
| 69 virtual void DidGetResourceContent(int request_id, const String& content) { | 70 virtual void DidGetResourceContent(int request_id, const String& content) { |
| 70 if (!resource_content_requests_.contains(request_id)) { | 71 if (!resource_content_requests_.contains(request_id)) { |
| 71 NOTREACHED(); | 72 ASSERT_NOT_REACHED(); |
| 72 return; | 73 return; |
| 73 } | 74 } |
| 74 ResourceContentRequestData request = | 75 ResourceContentRequestData request = |
| 75 resource_content_requests_.take(request_id); | 76 resource_content_requests_.take(request_id); |
| 76 | 77 |
| 77 InspectorController* ic = frame_->frame()->page()->inspectorController(); | 78 InspectorController* ic = frame_->frame()->page()->inspectorController(); |
| 78 if (request.frame && request.frame->attached()) { | 79 if (request.frame && request.frame->attached()) { |
| 79 ic->inspectorBackend()->addSourceToFrame(request.mime_type, | 80 ic->inspectorBackend()->addSourceToFrame(request.mime_type, |
| 80 content, | 81 content, |
| 81 request.frame.get()); | 82 request.frame.get()); |
| 82 } | 83 } |
| 83 } | 84 } |
| 84 | 85 |
| 85 bool WaitingForResponse(int resource_id, Node* frame) { | 86 bool WaitingForResponse(int resource_id, Node* frame) { |
| 86 if (resource_content_requests_.contains(resource_id)) { | 87 if (resource_content_requests_.contains(resource_id)) { |
| 87 DCHECK(resource_content_requests_.get(resource_id).frame.get() == frame) | 88 ASSERT(resource_content_requests_.get(resource_id).frame.get() == frame); |
| 88 << "Only one frame is expected to display given resource"; | |
| 89 return true; | 89 return true; |
| 90 } | 90 } |
| 91 return false; | 91 return false; |
| 92 } | 92 } |
| 93 | 93 |
| 94 void RequestSent(int resource_id, String mime_type, Node* frame) { | 94 void RequestSent(int resource_id, String mime_type, Node* frame) { |
| 95 ResourceContentRequestData data; | 95 ResourceContentRequestData data; |
| 96 data.mime_type = mime_type; | 96 data.mime_type = mime_type; |
| 97 data.frame = frame; | 97 data.frame = frame; |
| 98 DCHECK(!resource_content_requests_.contains(resource_id)); | 98 ASSERT(!resource_content_requests_.contains(resource_id)); |
| 99 resource_content_requests_.set(resource_id, data); | 99 resource_content_requests_.set(resource_id, data); |
| 100 } | 100 } |
| 101 | 101 |
| 102 private: | 102 private: |
| 103 WebFrameImpl* frame_; | 103 WebFrameImpl* frame_; |
| 104 HashMap<int, ResourceContentRequestData> resource_content_requests_; | 104 HashMap<int, ResourceContentRequestData> resource_content_requests_; |
| 105 DISALLOW_COPY_AND_ASSIGN(ToolsAgentNativeDelegateImpl); | 105 DISALLOW_COPY_AND_ASSIGN(ToolsAgentNativeDelegateImpl); |
| 106 }; | 106 }; |
| 107 | 107 |
| 108 // static | 108 // static |
| 109 WebDevToolsClient* WebDevToolsClient::Create( | 109 WebDevToolsFrontend* WebDevToolsFrontend::create( |
| 110 WebView* view, | 110 WebView* view, |
| 111 WebDevToolsClientDelegate* delegate, | 111 WebDevToolsFrontendClient* client, |
| 112 const WebString& application_locale) { | 112 const WebString& application_locale) { |
| 113 return new WebDevToolsClientImpl( | 113 return new WebDevToolsFrontendImpl( |
| 114 static_cast<WebViewImpl*>(view), | 114 static_cast<WebViewImpl*>(view), |
| 115 delegate, | 115 client, |
| 116 webkit_glue::WebStringToString(application_locale)); | 116 webkit_glue::WebStringToString(application_locale)); |
| 117 } | 117 } |
| 118 | 118 |
| 119 WebDevToolsClientImpl::WebDevToolsClientImpl( | 119 WebDevToolsFrontendImpl::WebDevToolsFrontendImpl( |
| 120 WebViewImpl* web_view_impl, | 120 WebViewImpl* web_view_impl, |
| 121 WebDevToolsClientDelegate* delegate, | 121 WebDevToolsFrontendClient* client, |
| 122 const String& application_locale) | 122 const String& application_locale) |
| 123 : web_view_impl_(web_view_impl), | 123 : web_view_impl_(web_view_impl), |
| 124 delegate_(delegate), | 124 client_(client), |
| 125 application_locale_(application_locale), | 125 application_locale_(application_locale), |
| 126 loaded_(false) { | 126 loaded_(false) { |
| 127 WebFrameImpl* frame = web_view_impl_->main_frame(); | 127 WebFrameImpl* frame = web_view_impl_->main_frame(); |
| 128 v8::HandleScope scope; | 128 v8::HandleScope scope; |
| 129 v8::Handle<v8::Context> frame_context = V8Proxy::context(frame->frame()); | 129 v8::Handle<v8::Context> frame_context = V8Proxy::context(frame->frame()); |
| 130 | 130 |
| 131 debugger_agent_obj_.set(new JsDebuggerAgentBoundObj( | 131 debugger_agent_obj_.set(new JsDebuggerAgentBoundObj( |
| 132 this, frame_context, "RemoteDebuggerAgent")); | 132 this, frame_context, "RemoteDebuggerAgent")); |
| 133 tools_agent_obj_.set( | 133 tools_agent_obj_.set( |
| 134 new JsToolsAgentBoundObj(this, frame_context, "RemoteToolsAgent")); | 134 new JsToolsAgentBoundObj(this, frame_context, "RemoteToolsAgent")); |
| 135 | 135 |
| 136 // Debugger commands should be sent using special method. | 136 // Debugger commands should be sent using special method. |
| 137 debugger_command_executor_obj_.set( | 137 debugger_command_executor_obj_.set( |
| 138 new BoundObject(frame_context, this, "RemoteDebuggerCommandExecutor")); | 138 new BoundObject(frame_context, this, "RemoteDebuggerCommandExecutor")); |
| 139 debugger_command_executor_obj_->AddProtoFunction( | 139 debugger_command_executor_obj_->AddProtoFunction( |
| 140 "DebuggerCommand", | 140 "DebuggerCommand", |
| 141 WebDevToolsClientImpl::JsDebuggerCommand); | 141 WebDevToolsFrontendImpl::JsDebuggerCommand); |
| 142 debugger_command_executor_obj_->Build(); | 142 debugger_command_executor_obj_->Build(); |
| 143 | 143 |
| 144 dev_tools_host_.set(new BoundObject(frame_context, this, "DevToolsHost")); | 144 dev_tools_host_.set(new BoundObject(frame_context, this, "DevToolsHost")); |
| 145 dev_tools_host_->AddProtoFunction( | 145 dev_tools_host_->AddProtoFunction( |
| 146 "reset", | 146 "reset", |
| 147 WebDevToolsClientImpl::JsReset); | 147 WebDevToolsFrontendImpl::JsReset); |
| 148 dev_tools_host_->AddProtoFunction( | 148 dev_tools_host_->AddProtoFunction( |
| 149 "addSourceToFrame", | 149 "addSourceToFrame", |
| 150 WebDevToolsClientImpl::JsAddSourceToFrame); | 150 WebDevToolsFrontendImpl::JsAddSourceToFrame); |
| 151 dev_tools_host_->AddProtoFunction( | 151 dev_tools_host_->AddProtoFunction( |
| 152 "addResourceSourceToFrame", | 152 "addResourceSourceToFrame", |
| 153 WebDevToolsClientImpl::JsAddResourceSourceToFrame); | 153 WebDevToolsFrontendImpl::JsAddResourceSourceToFrame); |
| 154 dev_tools_host_->AddProtoFunction( | 154 dev_tools_host_->AddProtoFunction( |
| 155 "loaded", | 155 "loaded", |
| 156 WebDevToolsClientImpl::JsLoaded); | 156 WebDevToolsFrontendImpl::JsLoaded); |
| 157 dev_tools_host_->AddProtoFunction( | 157 dev_tools_host_->AddProtoFunction( |
| 158 "search", | 158 "search", |
| 159 WebCore::V8Custom::v8InspectorBackendSearchCallback); | 159 WebCore::V8Custom::v8InspectorBackendSearchCallback); |
| 160 dev_tools_host_->AddProtoFunction( | 160 dev_tools_host_->AddProtoFunction( |
| 161 "getPlatform", | 161 "getPlatform", |
| 162 WebDevToolsClientImpl::JsGetPlatform); | 162 WebDevToolsFrontendImpl::JsGetPlatform); |
| 163 dev_tools_host_->AddProtoFunction( | 163 dev_tools_host_->AddProtoFunction( |
| 164 "activateWindow", | 164 "activateWindow", |
| 165 WebDevToolsClientImpl::JsActivateWindow); | 165 WebDevToolsFrontendImpl::JsActivateWindow); |
| 166 dev_tools_host_->AddProtoFunction( | 166 dev_tools_host_->AddProtoFunction( |
| 167 "closeWindow", | 167 "closeWindow", |
| 168 WebDevToolsClientImpl::JsCloseWindow); | 168 WebDevToolsFrontendImpl::JsCloseWindow); |
| 169 dev_tools_host_->AddProtoFunction( | 169 dev_tools_host_->AddProtoFunction( |
| 170 "dockWindow", | 170 "dockWindow", |
| 171 WebDevToolsClientImpl::JsDockWindow); | 171 WebDevToolsFrontendImpl::JsDockWindow); |
| 172 dev_tools_host_->AddProtoFunction( | 172 dev_tools_host_->AddProtoFunction( |
| 173 "undockWindow", | 173 "undockWindow", |
| 174 WebDevToolsClientImpl::JsUndockWindow); | 174 WebDevToolsFrontendImpl::JsUndockWindow); |
| 175 dev_tools_host_->AddProtoFunction( | 175 dev_tools_host_->AddProtoFunction( |
| 176 "toggleInspectElementMode", | 176 "toggleInspectElementMode", |
| 177 WebDevToolsClientImpl::JsToggleInspectElementMode); | 177 WebDevToolsFrontendImpl::JsToggleInspectElementMode); |
| 178 dev_tools_host_->AddProtoFunction( | 178 dev_tools_host_->AddProtoFunction( |
| 179 "getApplicationLocale", | 179 "getApplicationLocale", |
| 180 WebDevToolsClientImpl::JsGetApplicationLocale); | 180 WebDevToolsFrontendImpl::JsGetApplicationLocale); |
| 181 dev_tools_host_->AddProtoFunction( | 181 dev_tools_host_->AddProtoFunction( |
| 182 "hiddenPanels", | 182 "hiddenPanels", |
| 183 WebDevToolsClientImpl::JsHiddenPanels); | 183 WebDevToolsFrontendImpl::JsHiddenPanels); |
| 184 dev_tools_host_->Build(); | 184 dev_tools_host_->Build(); |
| 185 } | 185 } |
| 186 | 186 |
| 187 WebDevToolsClientImpl::~WebDevToolsClientImpl() { | 187 WebDevToolsFrontendImpl::~WebDevToolsFrontendImpl() { |
| 188 } | 188 } |
| 189 | 189 |
| 190 void WebDevToolsClientImpl::DispatchMessageFromAgent( | 190 void WebDevToolsFrontendImpl::dispatchMessageFromAgent( |
| 191 const WebString& class_name, | 191 const WebString& class_name, |
| 192 const WebString& method_name, | 192 const WebString& method_name, |
| 193 const WebString& param1, | 193 const WebString& param1, |
| 194 const WebString& param2, | 194 const WebString& param2, |
| 195 const WebString& param3) { | 195 const WebString& param3) { |
| 196 if (ToolsAgentNativeDelegateDispatch::Dispatch( | 196 if (ToolsAgentNativeDelegateDispatch::Dispatch( |
| 197 tools_agent_native_delegate_impl_.get(), | 197 tools_agent_native_delegate_impl_.get(), |
| 198 webkit_glue::WebStringToString(class_name), | 198 webkit_glue::WebStringToString(class_name), |
| 199 webkit_glue::WebStringToString(method_name), | 199 webkit_glue::WebStringToString(method_name), |
| 200 webkit_glue::WebStringToString(param1), | 200 webkit_glue::WebStringToString(param1), |
| 201 webkit_glue::WebStringToString(param2), | 201 webkit_glue::WebStringToString(param2), |
| 202 webkit_glue::WebStringToString(param3))) { | 202 webkit_glue::WebStringToString(param3))) { |
| 203 return; | 203 return; |
| 204 } | 204 } |
| 205 | 205 |
| 206 Vector<String> v; | 206 Vector<String> v; |
| 207 v.append(webkit_glue::WebStringToString(class_name)); | 207 v.append(webkit_glue::WebStringToString(class_name)); |
| 208 v.append(webkit_glue::WebStringToString(method_name)); | 208 v.append(webkit_glue::WebStringToString(method_name)); |
| 209 v.append(webkit_glue::WebStringToString(param1)); | 209 v.append(webkit_glue::WebStringToString(param1)); |
| 210 v.append(webkit_glue::WebStringToString(param2)); | 210 v.append(webkit_glue::WebStringToString(param2)); |
| 211 v.append(webkit_glue::WebStringToString(param3)); | 211 v.append(webkit_glue::WebStringToString(param3)); |
| 212 if (!loaded_) { | 212 if (!loaded_) { |
| 213 pending_incoming_messages_.append(v); | 213 pending_incoming_messages_.append(v); |
| 214 return; | 214 return; |
| 215 } | 215 } |
| 216 ExecuteScript(v); | 216 ExecuteScript(v); |
| 217 } | 217 } |
| 218 | 218 |
| 219 void WebDevToolsClientImpl::AddResourceSourceToFrame(int resource_id, | 219 void WebDevToolsFrontendImpl::AddResourceSourceToFrame(int resource_id, |
| 220 String mime_type, | 220 String mime_type, |
| 221 Node* frame) { | 221 Node* frame) { |
| 222 if (tools_agent_native_delegate_impl_->WaitingForResponse(resource_id, | 222 if (tools_agent_native_delegate_impl_->WaitingForResponse(resource_id, |
| 223 frame)) { | 223 frame)) { |
| 224 return; | 224 return; |
| 225 } | 225 } |
| 226 tools_agent_obj_->GetResourceContent(resource_id, resource_id); | 226 tools_agent_obj_->GetResourceContent(resource_id, resource_id); |
| 227 tools_agent_native_delegate_impl_->RequestSent(resource_id, mime_type, frame); | 227 tools_agent_native_delegate_impl_->RequestSent(resource_id, mime_type, frame); |
| 228 } | 228 } |
| 229 | 229 |
| 230 void WebDevToolsClientImpl::ExecuteScript(const Vector<String>& v) { | 230 void WebDevToolsFrontendImpl::ExecuteScript(const Vector<String>& v) { |
| 231 WebFrameImpl* frame = web_view_impl_->main_frame(); | 231 WebFrameImpl* frame = web_view_impl_->main_frame(); |
| 232 v8::HandleScope scope; | 232 v8::HandleScope scope; |
| 233 v8::Handle<v8::Context> frame_context = V8Proxy::context(frame->frame()); | 233 v8::Handle<v8::Context> frame_context = V8Proxy::context(frame->frame()); |
| 234 v8::Context::Scope context_scope(frame_context); | 234 v8::Context::Scope context_scope(frame_context); |
| 235 v8::Handle<v8::Value> dispatch_function = | 235 v8::Handle<v8::Value> dispatch_function = |
| 236 frame_context->Global()->Get(v8::String::New("devtools$$dispatch")); | 236 frame_context->Global()->Get(v8::String::New("devtools$$dispatch")); |
| 237 ASSERT(dispatch_function->IsFunction()); | 237 ASSERT(dispatch_function->IsFunction()); |
| 238 v8::Handle<v8::Function> function = v8::Handle<v8::Function>::Cast(dispatch_fu
nction); | 238 v8::Handle<v8::Function> function = v8::Handle<v8::Function>::Cast(dispatch_fu
nction); |
| 239 v8::Handle<v8::Value> args[] = { | 239 v8::Handle<v8::Value> args[] = { |
| 240 ToV8String(v.at(0)), | 240 ToV8String(v.at(0)), |
| 241 ToV8String(v.at(1)), | 241 ToV8String(v.at(1)), |
| 242 ToV8String(v.at(2)), | 242 ToV8String(v.at(2)), |
| 243 ToV8String(v.at(3)), | 243 ToV8String(v.at(3)), |
| 244 ToV8String(v.at(4)), | 244 ToV8String(v.at(4)), |
| 245 }; | 245 }; |
| 246 function->Call(frame_context->Global(), 5, args); | 246 function->Call(frame_context->Global(), 5, args); |
| 247 } | 247 } |
| 248 | 248 |
| 249 void WebDevToolsClientImpl::SendRpcMessage(const String& class_name, | 249 void WebDevToolsFrontendImpl::SendRpcMessage(const String& class_name, |
| 250 const String& method_name, | 250 const String& method_name, |
| 251 const String& param1, | 251 const String& param1, |
| 252 const String& param2, | 252 const String& param2, |
| 253 const String& param3) { | 253 const String& param3) { |
| 254 delegate_->SendMessageToAgent( | 254 client_->sendMessageToAgent( |
| 255 webkit_glue::StringToWebString(class_name), | 255 webkit_glue::StringToWebString(class_name), |
| 256 webkit_glue::StringToWebString(method_name), | 256 webkit_glue::StringToWebString(method_name), |
| 257 webkit_glue::StringToWebString(param1), | 257 webkit_glue::StringToWebString(param1), |
| 258 webkit_glue::StringToWebString(param2), | 258 webkit_glue::StringToWebString(param2), |
| 259 webkit_glue::StringToWebString(param3)); | 259 webkit_glue::StringToWebString(param3)); |
| 260 } | 260 } |
| 261 | 261 |
| 262 // static | 262 // static |
| 263 v8::Handle<v8::Value> WebDevToolsClientImpl::JsReset( | 263 v8::Handle<v8::Value> WebDevToolsFrontendImpl::JsReset( |
| 264 const v8::Arguments& args) { | 264 const v8::Arguments& args) { |
| 265 WebDevToolsClientImpl* client = static_cast<WebDevToolsClientImpl*>( | 265 WebDevToolsFrontendImpl* frontend = static_cast<WebDevToolsFrontendImpl*>( |
| 266 v8::External::Cast(*args.Data())->Value()); | 266 v8::External::Cast(*args.Data())->Value()); |
| 267 WebFrameImpl* frame = client->web_view_impl_->main_frame(); | 267 WebFrameImpl* frame = frontend->web_view_impl_->main_frame(); |
| 268 client->tools_agent_native_delegate_impl_.set( | 268 frontend->tools_agent_native_delegate_impl_.set( |
| 269 new ToolsAgentNativeDelegateImpl(frame)); | 269 new ToolsAgentNativeDelegateImpl(frame)); |
| 270 return v8::Undefined(); | 270 return v8::Undefined(); |
| 271 } | 271 } |
| 272 | 272 |
| 273 // static | 273 // static |
| 274 v8::Handle<v8::Value> WebDevToolsClientImpl::JsAddSourceToFrame( | 274 v8::Handle<v8::Value> WebDevToolsFrontendImpl::JsAddSourceToFrame( |
| 275 const v8::Arguments& args) { | 275 const v8::Arguments& args) { |
| 276 if (args.Length() < 2) { | 276 if (args.Length() < 2) { |
| 277 return v8::Undefined(); | 277 return v8::Undefined(); |
| 278 } | 278 } |
| 279 | 279 |
| 280 v8::TryCatch exception_catcher; | 280 v8::TryCatch exception_catcher; |
| 281 | 281 |
| 282 String mime_type = WebCore::toWebCoreStringWithNullCheck(args[0]); | 282 String mime_type = WebCore::toWebCoreStringWithNullCheck(args[0]); |
| 283 if (mime_type.isEmpty() || exception_catcher.HasCaught()) { | 283 if (mime_type.isEmpty() || exception_catcher.HasCaught()) { |
| 284 return v8::Undefined(); | 284 return v8::Undefined(); |
| 285 } | 285 } |
| 286 String source_string = WebCore::toWebCoreStringWithNullCheck(args[1]); | 286 String source_string = WebCore::toWebCoreStringWithNullCheck(args[1]); |
| 287 if (source_string.isEmpty() || exception_catcher.HasCaught()) { | 287 if (source_string.isEmpty() || exception_catcher.HasCaught()) { |
| 288 return v8::Undefined(); | 288 return v8::Undefined(); |
| 289 } | 289 } |
| 290 v8::Handle<v8::Object> wrapper = v8::Handle<v8::Object>::Cast(args[2]); | 290 v8::Handle<v8::Object> wrapper = v8::Handle<v8::Object>::Cast(args[2]); |
| 291 Node* node = V8DOMWrapper::convertDOMWrapperToNode<Node>(wrapper); | 291 Node* node = V8DOMWrapper::convertDOMWrapperToNode<Node>(wrapper); |
| 292 if (!node || !node->attached()) { | 292 if (!node || !node->attached()) { |
| 293 return v8::Undefined(); | 293 return v8::Undefined(); |
| 294 } | 294 } |
| 295 | 295 |
| 296 Page* page = V8Proxy::retrieveFrameForEnteredContext()->page(); | 296 Page* page = V8Proxy::retrieveFrameForEnteredContext()->page(); |
| 297 InspectorController* inspectorController = page->inspectorController(); | 297 InspectorController* inspectorController = page->inspectorController(); |
| 298 return WebCore::v8Boolean(inspectorController->inspectorBackend()-> | 298 return WebCore::v8Boolean(inspectorController->inspectorBackend()-> |
| 299 addSourceToFrame(mime_type, source_string, node)); | 299 addSourceToFrame(mime_type, source_string, node)); |
| 300 } | 300 } |
| 301 | 301 |
| 302 // static | 302 // static |
| 303 v8::Handle<v8::Value> WebDevToolsClientImpl::JsAddResourceSourceToFrame( | 303 v8::Handle<v8::Value> WebDevToolsFrontendImpl::JsAddResourceSourceToFrame( |
| 304 const v8::Arguments& args) { | 304 const v8::Arguments& args) { |
| 305 int resource_id = static_cast<int>(args[0]->NumberValue()); | 305 int resource_id = static_cast<int>(args[0]->NumberValue()); |
| 306 String mime_type = WebCore::toWebCoreStringWithNullCheck(args[1]); | 306 String mime_type = WebCore::toWebCoreStringWithNullCheck(args[1]); |
| 307 if (mime_type.isEmpty()) { | 307 if (mime_type.isEmpty()) { |
| 308 return v8::Undefined(); | 308 return v8::Undefined(); |
| 309 } | 309 } |
| 310 v8::Handle<v8::Object> wrapper = v8::Handle<v8::Object>::Cast(args[2]); | 310 v8::Handle<v8::Object> wrapper = v8::Handle<v8::Object>::Cast(args[2]); |
| 311 Node* node = V8DOMWrapper::convertDOMWrapperToNode<Node>(wrapper); | 311 Node* node = V8DOMWrapper::convertDOMWrapperToNode<Node>(wrapper); |
| 312 WebDevToolsClientImpl* client = static_cast<WebDevToolsClientImpl*>( | 312 WebDevToolsFrontendImpl* frontend = static_cast<WebDevToolsFrontendImpl*>( |
| 313 v8::External::Cast(*args.Data())->Value()); | 313 v8::External::Cast(*args.Data())->Value()); |
| 314 client->AddResourceSourceToFrame(resource_id, mime_type, node); | 314 frontend->AddResourceSourceToFrame(resource_id, mime_type, node); |
| 315 return v8::Undefined(); | 315 return v8::Undefined(); |
| 316 } | 316 } |
| 317 | 317 |
| 318 // static | 318 // static |
| 319 v8::Handle<v8::Value> WebDevToolsClientImpl::JsLoaded( | 319 v8::Handle<v8::Value> WebDevToolsFrontendImpl::JsLoaded( |
| 320 const v8::Arguments& args) { | 320 const v8::Arguments& args) { |
| 321 WebDevToolsClientImpl* client = static_cast<WebDevToolsClientImpl*>( | 321 WebDevToolsFrontendImpl* frontend = static_cast<WebDevToolsFrontendImpl*>( |
| 322 v8::External::Cast(*args.Data())->Value()); | 322 v8::External::Cast(*args.Data())->Value()); |
| 323 client->loaded_ = true; | 323 frontend->loaded_ = true; |
| 324 | 324 |
| 325 // Grant the devtools page the ability to have source view iframes. | 325 // Grant the devtools page the ability to have source view iframes. |
| 326 Page* page = V8Proxy::retrieveFrameForEnteredContext()->page(); | 326 Page* page = V8Proxy::retrieveFrameForEnteredContext()->page(); |
| 327 SecurityOrigin* origin = page->mainFrame()->domWindow()->securityOrigin(); | 327 SecurityOrigin* origin = page->mainFrame()->domWindow()->securityOrigin(); |
| 328 origin->grantUniversalAccess(); | 328 origin->grantUniversalAccess(); |
| 329 | 329 |
| 330 for (Vector<Vector<String> >::iterator it = | 330 for (Vector<Vector<String> >::iterator it = |
| 331 client->pending_incoming_messages_.begin(); | 331 frontend->pending_incoming_messages_.begin(); |
| 332 it != client->pending_incoming_messages_.end(); | 332 it != frontend->pending_incoming_messages_.end(); |
| 333 ++it) { | 333 ++it) { |
| 334 client->ExecuteScript(*it); | 334 frontend->ExecuteScript(*it); |
| 335 } | 335 } |
| 336 client->pending_incoming_messages_.clear(); | 336 frontend->pending_incoming_messages_.clear(); |
| 337 return v8::Undefined(); | 337 return v8::Undefined(); |
| 338 } | 338 } |
| 339 | 339 |
| 340 // static | 340 // static |
| 341 v8::Handle<v8::Value> WebDevToolsClientImpl::JsGetPlatform( | 341 v8::Handle<v8::Value> WebDevToolsFrontendImpl::JsGetPlatform( |
| 342 const v8::Arguments& args) { | 342 const v8::Arguments& args) { |
| 343 #if defined OS_MACOSX | 343 #if defined OS_MACOSX |
| 344 return v8String("mac-leopard"); | 344 return v8String("mac-leopard"); |
| 345 #elif defined OS_LINUX | 345 #elif defined OS_LINUX |
| 346 return v8String("linux"); | 346 return v8String("linux"); |
| 347 #else | 347 #else |
| 348 return v8String("windows"); | 348 return v8String("windows"); |
| 349 #endif | 349 #endif |
| 350 } | 350 } |
| 351 | 351 |
| 352 // static | 352 // static |
| 353 v8::Handle<v8::Value> WebDevToolsClientImpl::JsActivateWindow( | 353 v8::Handle<v8::Value> WebDevToolsFrontendImpl::JsActivateWindow( |
| 354 const v8::Arguments& args) { | 354 const v8::Arguments& args) { |
| 355 WebDevToolsClientImpl* client = static_cast<WebDevToolsClientImpl*>( | 355 WebDevToolsFrontendImpl* frontend = static_cast<WebDevToolsFrontendImpl*>( |
| 356 v8::External::Cast(*args.Data())->Value()); | 356 v8::External::Cast(*args.Data())->Value()); |
| 357 client->delegate_->ActivateWindow(); | 357 frontend->client_->activateWindow(); |
| 358 return v8::Undefined(); | 358 return v8::Undefined(); |
| 359 } | 359 } |
| 360 | 360 |
| 361 // static | 361 // static |
| 362 v8::Handle<v8::Value> WebDevToolsClientImpl::JsCloseWindow( | 362 v8::Handle<v8::Value> WebDevToolsFrontendImpl::JsCloseWindow( |
| 363 const v8::Arguments& args) { | 363 const v8::Arguments& args) { |
| 364 WebDevToolsClientImpl* client = static_cast<WebDevToolsClientImpl*>( | 364 WebDevToolsFrontendImpl* frontend = static_cast<WebDevToolsFrontendImpl*>( |
| 365 v8::External::Cast(*args.Data())->Value()); | 365 v8::External::Cast(*args.Data())->Value()); |
| 366 client->delegate_->CloseWindow(); | 366 frontend->client_->closeWindow(); |
| 367 return v8::Undefined(); | 367 return v8::Undefined(); |
| 368 } | 368 } |
| 369 | 369 |
| 370 // static | 370 // static |
| 371 v8::Handle<v8::Value> WebDevToolsClientImpl::JsDockWindow( | 371 v8::Handle<v8::Value> WebDevToolsFrontendImpl::JsDockWindow( |
| 372 const v8::Arguments& args) { | 372 const v8::Arguments& args) { |
| 373 WebDevToolsClientImpl* client = static_cast<WebDevToolsClientImpl*>( | 373 WebDevToolsFrontendImpl* frontend = static_cast<WebDevToolsFrontendImpl*>( |
| 374 v8::External::Cast(*args.Data())->Value()); | 374 v8::External::Cast(*args.Data())->Value()); |
| 375 client->delegate_->DockWindow(); | 375 frontend->client_->dockWindow(); |
| 376 return v8::Undefined(); | 376 return v8::Undefined(); |
| 377 } | 377 } |
| 378 | 378 |
| 379 // static | 379 // static |
| 380 v8::Handle<v8::Value> WebDevToolsClientImpl::JsUndockWindow( | 380 v8::Handle<v8::Value> WebDevToolsFrontendImpl::JsUndockWindow( |
| 381 const v8::Arguments& args) { | 381 const v8::Arguments& args) { |
| 382 WebDevToolsClientImpl* client = static_cast<WebDevToolsClientImpl*>( | 382 WebDevToolsFrontendImpl* frontend = static_cast<WebDevToolsFrontendImpl*>( |
| 383 v8::External::Cast(*args.Data())->Value()); | 383 v8::External::Cast(*args.Data())->Value()); |
| 384 client->delegate_->UndockWindow(); | 384 frontend->client_->undockWindow(); |
| 385 return v8::Undefined(); | 385 return v8::Undefined(); |
| 386 } | 386 } |
| 387 | 387 |
| 388 // static | 388 // static |
| 389 v8::Handle<v8::Value> WebDevToolsClientImpl::JsToggleInspectElementMode( | 389 v8::Handle<v8::Value> WebDevToolsFrontendImpl::JsToggleInspectElementMode( |
| 390 const v8::Arguments& args) { | 390 const v8::Arguments& args) { |
| 391 WebDevToolsClientImpl* client = static_cast<WebDevToolsClientImpl*>( | 391 WebDevToolsFrontendImpl* frontend = static_cast<WebDevToolsFrontendImpl*>( |
| 392 v8::External::Cast(*args.Data())->Value()); | 392 v8::External::Cast(*args.Data())->Value()); |
| 393 int enabled = static_cast<int>(args[0]->BooleanValue()); | 393 int enabled = static_cast<int>(args[0]->BooleanValue()); |
| 394 client->delegate_->ToggleInspectElementMode(enabled); | 394 frontend->client_->toggleInspectElementMode(enabled); |
| 395 return v8::Undefined(); | 395 return v8::Undefined(); |
| 396 } | 396 } |
| 397 | 397 |
| 398 // static | 398 // static |
| 399 v8::Handle<v8::Value> WebDevToolsClientImpl::JsGetApplicationLocale( | 399 v8::Handle<v8::Value> WebDevToolsFrontendImpl::JsGetApplicationLocale( |
| 400 const v8::Arguments& args) { | 400 const v8::Arguments& args) { |
| 401 WebDevToolsClientImpl* client = static_cast<WebDevToolsClientImpl*>( | 401 WebDevToolsFrontendImpl* frontend = static_cast<WebDevToolsFrontendImpl*>( |
| 402 v8::External::Cast(*args.Data())->Value()); | 402 v8::External::Cast(*args.Data())->Value()); |
| 403 return v8String(client->application_locale_); | 403 return v8String(frontend->application_locale_); |
| 404 } | 404 } |
| 405 | 405 |
| 406 // static | 406 // static |
| 407 v8::Handle<v8::Value> WebDevToolsClientImpl::JsHiddenPanels( | 407 v8::Handle<v8::Value> WebDevToolsFrontendImpl::JsHiddenPanels( |
| 408 const v8::Arguments& args) { | 408 const v8::Arguments& args) { |
| 409 Page* page = V8Proxy::retrieveFrameForEnteredContext()->page(); | 409 Page* page = V8Proxy::retrieveFrameForEnteredContext()->page(); |
| 410 return v8String(page->settings()->databasesEnabled() ? "" : "databases"); | 410 return v8String(page->settings()->databasesEnabled() ? "" : "databases"); |
| 411 } | 411 } |
| 412 | 412 |
| 413 // static | 413 // static |
| 414 v8::Handle<v8::Value> WebDevToolsClientImpl::JsDebuggerCommand( | 414 v8::Handle<v8::Value> WebDevToolsFrontendImpl::JsDebuggerCommand( |
| 415 const v8::Arguments& args) { | 415 const v8::Arguments& args) { |
| 416 WebDevToolsClientImpl* client = static_cast<WebDevToolsClientImpl*>( | 416 WebDevToolsFrontendImpl* frontend = static_cast<WebDevToolsFrontendImpl*>( |
| 417 v8::External::Cast(*args.Data())->Value()); | 417 v8::External::Cast(*args.Data())->Value()); |
| 418 String command = WebCore::toWebCoreStringWithNullCheck(args[0]); | 418 String command = WebCore::toWebCoreStringWithNullCheck(args[0]); |
| 419 WebString std_command = webkit_glue::StringToWebString(command); | 419 WebString std_command = webkit_glue::StringToWebString(command); |
| 420 client->delegate_->SendDebuggerCommandToAgent(std_command); | 420 frontend->client_->sendDebuggerCommandToAgent(std_command); |
| 421 return v8::Undefined(); | 421 return v8::Undefined(); |
| 422 } | 422 } |
| OLD | NEW |