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

Side by Side Diff: extensions/renderer/dispatcher.cc

Issue 344433003: Prepare declarativeContent API for new script injection feature. Added Javascript types and functio… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Greatly simplified: Got rid of WatchedPagesRecipient and new event types Created 6 years, 5 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "extensions/renderer/dispatcher.h" 5 #include "extensions/renderer/dispatcher.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/debug/alias.h" 10 #include "base/debug/alias.h"
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 169
170 void GetChrome(const v8::FunctionCallbackInfo<v8::Value>& args) { 170 void GetChrome(const v8::FunctionCallbackInfo<v8::Value>& args) {
171 args.GetReturnValue().Set(GetOrCreateChrome(context())); 171 args.GetReturnValue().Set(GetOrCreateChrome(context()));
172 } 172 }
173 }; 173 };
174 174
175 } // namespace 175 } // namespace
176 176
177 Dispatcher::Dispatcher(DispatcherDelegate* delegate) 177 Dispatcher::Dispatcher(DispatcherDelegate* delegate)
178 : delegate_(delegate), 178 : delegate_(delegate),
179 content_watcher_(new ContentWatcher()),
180 source_map_(&ResourceBundle::GetSharedInstance()), 179 source_map_(&ResourceBundle::GetSharedInstance()),
181 v8_schema_registry_(new V8SchemaRegistry), 180 v8_schema_registry_(new V8SchemaRegistry),
182 is_webkit_initialized_(false), 181 is_webkit_initialized_(false),
183 user_script_set_observer_(this) { 182 user_script_set_observer_(this) {
184 const CommandLine& command_line = *(CommandLine::ForCurrentProcess()); 183 const CommandLine& command_line = *(CommandLine::ForCurrentProcess());
185 is_extension_process_ = 184 is_extension_process_ =
186 command_line.HasSwitch(extensions::switches::kExtensionProcess) || 185 command_line.HasSwitch(extensions::switches::kExtensionProcess) ||
187 command_line.HasSwitch(::switches::kSingleProcess); 186 command_line.HasSwitch(::switches::kSingleProcess);
188 187
189 if (is_extension_process_) { 188 if (is_extension_process_) {
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 std::string stylesheet = ResourceBundle::GetSharedInstance() 331 std::string stylesheet = ResourceBundle::GetSharedInstance()
333 .GetRawDataResource(IDR_PLATFORM_APP_CSS) 332 .GetRawDataResource(IDR_PLATFORM_APP_CSS)
334 .as_string(); 333 .as_string();
335 ReplaceFirstSubstringAfterOffset( 334 ReplaceFirstSubstringAfterOffset(
336 &stylesheet, 0, "$FONTFAMILY", system_font_family_); 335 &stylesheet, 0, "$FONTFAMILY", system_font_family_);
337 ReplaceFirstSubstringAfterOffset( 336 ReplaceFirstSubstringAfterOffset(
338 &stylesheet, 0, "$FONTSIZE", system_font_size_); 337 &stylesheet, 0, "$FONTSIZE", system_font_size_);
339 frame->document().insertStyleSheet(WebString::fromUTF8(stylesheet)); 338 frame->document().insertStyleSheet(WebString::fromUTF8(stylesheet));
340 } 339 }
341 340
342 content_watcher_->DidCreateDocumentElement(frame); 341 for (ContentWatcherMap::iterator it = content_watchers_.begin();
342 it != content_watchers_.end(); ++it) {
343 it->second->DidCreateDocumentElement(frame);
344 }
343 } 345 }
344 346
345 void Dispatcher::DidMatchCSS( 347 void Dispatcher::DidMatchCSS(
346 blink::WebFrame* frame, 348 blink::WebFrame* frame,
347 const blink::WebVector<blink::WebString>& newly_matching_selectors, 349 const blink::WebVector<blink::WebString>& newly_matching_selectors,
348 const blink::WebVector<blink::WebString>& stopped_matching_selectors) { 350 const blink::WebVector<blink::WebString>& stopped_matching_selectors) {
349 content_watcher_->DidMatchCSS( 351 for (ContentWatcherMap::iterator it = content_watchers_.begin();
350 frame, newly_matching_selectors, stopped_matching_selectors); 352 it != content_watchers_.end(); ++it) {
353 it->second->DidMatchCSS(
354 frame, newly_matching_selectors, stopped_matching_selectors);
355 }
351 } 356 }
352 357
353 void Dispatcher::OnExtensionResponse(int request_id, 358 void Dispatcher::OnExtensionResponse(int request_id,
354 bool success, 359 bool success,
355 const base::ListValue& response, 360 const base::ListValue& response,
356 const std::string& error) { 361 const std::string& error) {
357 request_sender_->HandleResponse(request_id, success, response, error); 362 request_sender_->HandleResponse(request_id, success, response, error);
358 } 363 }
359 364
360 bool Dispatcher::CheckContextAccessToExtensionAPI( 365 bool Dispatcher::CheckContextAccessToExtensionAPI(
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 OnSetScriptingWhitelist) 475 OnSetScriptingWhitelist)
471 IPC_MESSAGE_HANDLER(ExtensionMsg_SetSystemFont, OnSetSystemFont) 476 IPC_MESSAGE_HANDLER(ExtensionMsg_SetSystemFont, OnSetSystemFont)
472 IPC_MESSAGE_HANDLER(ExtensionMsg_ShouldSuspend, OnShouldSuspend) 477 IPC_MESSAGE_HANDLER(ExtensionMsg_ShouldSuspend, OnShouldSuspend)
473 IPC_MESSAGE_HANDLER(ExtensionMsg_Suspend, OnSuspend) 478 IPC_MESSAGE_HANDLER(ExtensionMsg_Suspend, OnSuspend)
474 IPC_MESSAGE_HANDLER(ExtensionMsg_TransferBlobs, OnTransferBlobs) 479 IPC_MESSAGE_HANDLER(ExtensionMsg_TransferBlobs, OnTransferBlobs)
475 IPC_MESSAGE_HANDLER(ExtensionMsg_Unloaded, OnUnloaded) 480 IPC_MESSAGE_HANDLER(ExtensionMsg_Unloaded, OnUnloaded)
476 IPC_MESSAGE_HANDLER(ExtensionMsg_UpdatePermissions, OnUpdatePermissions) 481 IPC_MESSAGE_HANDLER(ExtensionMsg_UpdatePermissions, OnUpdatePermissions)
477 IPC_MESSAGE_HANDLER(ExtensionMsg_UpdateTabSpecificPermissions, 482 IPC_MESSAGE_HANDLER(ExtensionMsg_UpdateTabSpecificPermissions,
478 OnUpdateTabSpecificPermissions) 483 OnUpdateTabSpecificPermissions)
479 IPC_MESSAGE_HANDLER(ExtensionMsg_UsingWebRequestAPI, OnUsingWebRequestAPI) 484 IPC_MESSAGE_HANDLER(ExtensionMsg_UsingWebRequestAPI, OnUsingWebRequestAPI)
480 IPC_MESSAGE_FORWARD(ExtensionMsg_WatchPages, 485 IPC_MESSAGE_HANDLER(ExtensionMsg_WatchPages,
481 content_watcher_.get(), 486 OnWatchPages)
482 ContentWatcher::OnWatchPages)
483 IPC_MESSAGE_UNHANDLED(handled = false) 487 IPC_MESSAGE_UNHANDLED(handled = false)
484 IPC_END_MESSAGE_MAP() 488 IPC_END_MESSAGE_MAP()
485 489
486 return handled; 490 return handled;
487 } 491 }
488 492
489 void Dispatcher::WebKitInitialized() { 493 void Dispatcher::WebKitInitialized() {
490 // For extensions, we want to ensure we call the IdleHandler every so often, 494 // For extensions, we want to ensure we call the IdleHandler every so often,
491 // even if the extension keeps up activity. 495 // even if the extension keeps up activity.
492 if (is_extension_process_) { 496 if (is_extension_process_) {
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
779 void Dispatcher::OnUsingWebRequestAPI(bool webrequest_used) { 783 void Dispatcher::OnUsingWebRequestAPI(bool webrequest_used) {
780 delegate_->HandleWebRequestAPIUsage(webrequest_used); 784 delegate_->HandleWebRequestAPIUsage(webrequest_used);
781 } 785 }
782 786
783 void Dispatcher::OnUserScriptsUpdated( 787 void Dispatcher::OnUserScriptsUpdated(
784 const std::set<std::string>& changed_extensions, 788 const std::set<std::string>& changed_extensions,
785 const std::vector<UserScript*>& scripts) { 789 const std::vector<UserScript*>& scripts) {
786 UpdateActiveExtensions(); 790 UpdateActiveExtensions();
787 } 791 }
788 792
793 void Dispatcher::OnWatchPages(
794 const std::string& event_name,
795 const std::vector<std::string>& css_selectors) {
796 ContentWatcherMap::iterator it = content_watchers_.find(event_name);
797 if (it == content_watchers_.end()) {
798 content_watchers_[event_name] = make_linked_ptr(
799 new ContentWatcher(event_name));
800 }
801 content_watchers_[event_name]->OnWatchPages(css_selectors);
802 }
803
789 void Dispatcher::UpdateActiveExtensions() { 804 void Dispatcher::UpdateActiveExtensions() {
790 std::set<std::string> active_extensions = active_extension_ids_; 805 std::set<std::string> active_extensions = active_extension_ids_;
791 user_script_set_->GetActiveExtensionIds(&active_extensions); 806 user_script_set_->GetActiveExtensionIds(&active_extensions);
792 delegate_->OnActiveExtensionsUpdated(active_extensions); 807 delegate_->OnActiveExtensionsUpdated(active_extensions);
793 } 808 }
794 809
795 void Dispatcher::InitOriginPermissions(const Extension* extension) { 810 void Dispatcher::InitOriginPermissions(const Extension* extension) {
796 delegate_->InitOriginPermissions(extension, 811 delegate_->InitOriginPermissions(extension,
797 IsExtensionActive(extension->id())); 812 IsExtensionActive(extension->id()));
798 UpdateOriginPermissions( 813 UpdateOriginPermissions(
(...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after
1225 return v8::Handle<v8::Object>(); 1240 return v8::Handle<v8::Object>();
1226 1241
1227 if (bind_name) 1242 if (bind_name)
1228 *bind_name = split.back(); 1243 *bind_name = split.back();
1229 1244
1230 return bind_object.IsEmpty() ? AsObjectOrEmpty(GetOrCreateChrome(context)) 1245 return bind_object.IsEmpty() ? AsObjectOrEmpty(GetOrCreateChrome(context))
1231 : bind_object; 1246 : bind_object;
1232 } 1247 }
1233 1248
1234 } // namespace extensions 1249 } // namespace extensions
OLDNEW
« chrome/common/extensions/api/declarative_content.json ('K') | « extensions/renderer/dispatcher.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698