Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(16)

Side by Side Diff: webkit/glue/devtools/debugger_agent_impl.cc

Issue 99184: DevTools: Implement styles toggle:... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « webkit/glue/devtools/debugger_agent_impl.h ('k') | webkit/glue/devtools/js/devtools.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <wtf/HashSet.h> 7 #include <wtf/HashSet.h>
8 #include <wtf/RefPtr.h> 8 #include <wtf/RefPtr.h>
9 #include <wtf/Vector.h> 9 #include <wtf/Vector.h>
10 10
11 #include "Document.h" 11 #include "Document.h"
12 #include "Node.h" 12 #include "Node.h"
13 #include "Page.h" 13 #include "Page.h"
14 #include "PageGroupLoadDeferrer.h" 14 #include "PageGroupLoadDeferrer.h"
15 #undef LOG 15 #undef LOG
16 16
17 #include "grit/webkit_resources.h" 17 #include "grit/webkit_resources.h"
18 #include "V8Binding.h" 18 #include "V8Binding.h"
19 #include "V8DOMWindow.h" 19 #include "V8DOMWindow.h"
20 #include "v8_binding.h"
20 #include "v8_index.h" 21 #include "v8_index.h"
21 #include "v8_proxy.h" 22 #include "v8_proxy.h"
22 #include "webkit/glue/devtools/debugger_agent_impl.h" 23 #include "webkit/glue/devtools/debugger_agent_impl.h"
23 #include "webkit/glue/devtools/debugger_agent_manager.h" 24 #include "webkit/glue/devtools/debugger_agent_manager.h"
24 #include "webkit/glue/glue_util.h" 25 #include "webkit/glue/glue_util.h"
25 #include "webkit/glue/webdevtoolsagent_impl.h" 26 #include "webkit/glue/webdevtoolsagent_impl.h"
26 #include "webkit/glue/webkit_glue.h" 27 #include "webkit/glue/webkit_glue.h"
27 #include "webkit/glue/webview_impl.h" 28 #include "webkit/glue/webview_impl.h"
28 29
29 using WebCore::DOMWindow; 30 using WebCore::DOMWindow;
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 // original context. 105 // original context.
105 global->Set(v8::String::New("contentWindow"), window_global); 106 global->Set(v8::String::New("contentWindow"), window_global);
106 107
107 // Inject javascript into the context. 108 // Inject javascript into the context.
108 StringPiece basejs = webkit_glue::GetDataResource(IDR_DEVTOOLS_BASE_JS); 109 StringPiece basejs = webkit_glue::GetDataResource(IDR_DEVTOOLS_BASE_JS);
109 v8::Script::Compile(v8::String::New(basejs.as_string().c_str()))->Run(); 110 v8::Script::Compile(v8::String::New(basejs.as_string().c_str()))->Run();
110 StringPiece jsonjs = webkit_glue::GetDataResource(IDR_DEVTOOLS_JSON_JS); 111 StringPiece jsonjs = webkit_glue::GetDataResource(IDR_DEVTOOLS_JSON_JS);
111 v8::Script::Compile(v8::String::New(jsonjs.as_string().c_str()))->Run(); 112 v8::Script::Compile(v8::String::New(jsonjs.as_string().c_str()))->Run();
112 StringPiece injectjs = webkit_glue::GetDataResource(IDR_DEVTOOLS_INJECT_JS); 113 StringPiece injectjs = webkit_glue::GetDataResource(IDR_DEVTOOLS_INJECT_JS);
113 v8::Script::Compile(v8::String::New(injectjs.as_string().c_str()))->Run(); 114 v8::Script::Compile(v8::String::New(injectjs.as_string().c_str()))->Run();
115 StringPiece inject_dispatchjs = webkit_glue::GetDataResource(
116 IDR_DEVTOOLS_INJECT_DISPATCH_JS);
117 v8::Script::Compile(v8::String::New(
118 inject_dispatchjs.as_string().c_str()))->Run();
114 } 119 }
115 120
116 String DebuggerAgentImpl::ExecuteUtilityFunction( 121 String DebuggerAgentImpl::ExecuteUtilityFunction(
117 const String &function_name, 122 const String &function_name,
118 Node* node, 123 Node* node,
119 const String& json_args) { 124 const String& json_args,
125 String* exception) {
120 v8::HandleScope scope; 126 v8::HandleScope scope;
121 ASSERT(!context_.IsEmpty()); 127 ASSERT(!context_.IsEmpty());
122 v8::Context::Scope context_scope(context_); 128 v8::Context::Scope context_scope(context_);
123 v8::Handle<v8::Function> function = v8::Local<v8::Function>::Cast( 129 v8::Handle<v8::Function> function = v8::Local<v8::Function>::Cast(
124 context_->Global()->Get(v8::String::New(function_name.utf8().data()))); 130 context_->Global()->Get(v8::String::New("devtools$$dispatch")));
125 131
126 v8::Handle<v8::Value> node_wrapper = 132 v8::Handle<v8::Value> node_wrapper =
127 V8Proxy::ToV8Object(V8ClassIndex::NODE, node); 133 V8Proxy::ToV8Object(V8ClassIndex::NODE, node);
134 v8::Handle<v8::String> function_name_wrapper = v8::Handle<v8::String>(
135 v8::String::New(function_name.utf8().data()));
128 v8::Handle<v8::String> json_args_wrapper = v8::Handle<v8::String>( 136 v8::Handle<v8::String> json_args_wrapper = v8::Handle<v8::String>(
129 v8::String::New(json_args.utf8().data())); 137 v8::String::New(json_args.utf8().data()));
130 v8::Handle<v8::Value> args[] = { 138 v8::Handle<v8::Value> args[] = {
139 function_name_wrapper,
131 node_wrapper, 140 node_wrapper,
132 json_args_wrapper 141 json_args_wrapper
133 }; 142 };
134 143
135 v8::Handle<v8::Value> res_obj = function->Call( 144 v8::TryCatch try_catch;
136 context_->Global(), 2, args); 145 v8::Handle<v8::Value> res_obj = function->Call(context_->Global(), 3, args);
137 146 if (try_catch.HasCaught()) {
138 v8::Handle<v8::String> res_json = v8::Handle<v8::String>::Cast(res_obj); 147 *exception = WebCore::ToWebCoreString(try_catch.Message()->Get());
139 return WebCore::toWebCoreString(res_json); 148 return "";
149 } else {
150 v8::Handle<v8::String> res_json = v8::Handle<v8::String>::Cast(res_obj);
151 return WebCore::toWebCoreString(res_json);
152 }
140 } 153 }
141 154
142 void DebuggerAgentImpl::RunWithDeferredMessages( 155 void DebuggerAgentImpl::RunWithDeferredMessages(
143 const HashSet<DebuggerAgentImpl*>& agents, 156 const HashSet<DebuggerAgentImpl*>& agents,
144 WebDevToolsAgent::MessageLoopDispatchHandler handler) { 157 WebDevToolsAgent::MessageLoopDispatchHandler handler) {
145 Vector<PageGroupLoadDeferrer*> deferrers; 158 Vector<PageGroupLoadDeferrer*> deferrers;
146 // 1. Disable active objects and input events. 159 // 1. Disable active objects and input events.
147 for (HashSet<DebuggerAgentImpl*>::const_iterator ag_it = agents.begin(); 160 for (HashSet<DebuggerAgentImpl*>::const_iterator ag_it = agents.begin();
148 ag_it != agents.end(); ++ag_it) { 161 ag_it != agents.end(); ++ag_it) {
149 DebuggerAgentImpl* agent = *ag_it; 162 DebuggerAgentImpl* agent = *ag_it;
150 deferrers.append(new PageGroupLoadDeferrer(agent->GetPage(), true)); 163 deferrers.append(new PageGroupLoadDeferrer(agent->GetPage(), true));
151 agent->web_view()->SetIgnoreInputEvents(true); 164 agent->web_view()->SetIgnoreInputEvents(true);
152 } 165 }
153 166
154 // 2. Process messages. 167 // 2. Process messages.
155 handler(); 168 handler();
156 169
157 // 3. Bring things back. 170 // 3. Bring things back.
158 for (HashSet<DebuggerAgentImpl*>::const_iterator ag_it = agents.begin(); 171 for (HashSet<DebuggerAgentImpl*>::const_iterator ag_it = agents.begin();
159 ag_it != agents.end(); ++ag_it) { 172 ag_it != agents.end(); ++ag_it) {
160 (*ag_it)->web_view()->SetIgnoreInputEvents(false); 173 (*ag_it)->web_view()->SetIgnoreInputEvents(false);
161 } 174 }
162 deleteAllValues(deferrers); 175 deleteAllValues(deferrers);
163 } 176 }
164 177
165 WebCore::Page* DebuggerAgentImpl::GetPage() { 178 WebCore::Page* DebuggerAgentImpl::GetPage() {
166 return web_view_impl_->page(); 179 return web_view_impl_->page();
167 } 180 }
OLDNEW
« no previous file with comments | « webkit/glue/devtools/debugger_agent_impl.h ('k') | webkit/glue/devtools/js/devtools.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698