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

Side by Side Diff: chrome/browser/extensions/tab_helper.cc

Issue 11547033: Implement declarativeContent API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync past refactoring and fix build+tests Created 7 years, 11 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 | « chrome/browser/extensions/tab_helper.h ('k') | chrome/chrome_browser_extensions.gypi » ('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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/extensions/tab_helper.h" 5 #include "chrome/browser/extensions/tab_helper.h"
6 6
7 #include "chrome/browser/extensions/activity_log.h" 7 #include "chrome/browser/extensions/activity_log.h"
8 #include "chrome/browser/extensions/api/declarative/rules_registry_service.h"
9 #include "chrome/browser/extensions/api/declarative_content/content_rules_regist ry.h"
8 #include "chrome/browser/extensions/app_notify_channel_ui.h" 10 #include "chrome/browser/extensions/app_notify_channel_ui.h"
9 #include "chrome/browser/extensions/crx_installer.h" 11 #include "chrome/browser/extensions/crx_installer.h"
10 #include "chrome/browser/extensions/extension_action.h" 12 #include "chrome/browser/extensions/extension_action.h"
11 #include "chrome/browser/extensions/extension_action_manager.h" 13 #include "chrome/browser/extensions/extension_action_manager.h"
12 #include "chrome/browser/extensions/extension_service.h" 14 #include "chrome/browser/extensions/extension_service.h"
15 #include "chrome/browser/extensions/extension_system.h"
13 #include "chrome/browser/extensions/extension_tab_util.h" 16 #include "chrome/browser/extensions/extension_tab_util.h"
14 #include "chrome/browser/extensions/page_action_controller.h" 17 #include "chrome/browser/extensions/page_action_controller.h"
15 #include "chrome/browser/extensions/script_badge_controller.h" 18 #include "chrome/browser/extensions/script_badge_controller.h"
16 #include "chrome/browser/extensions/script_bubble_controller.h" 19 #include "chrome/browser/extensions/script_bubble_controller.h"
17 #include "chrome/browser/extensions/script_executor.h" 20 #include "chrome/browser/extensions/script_executor.h"
18 #include "chrome/browser/extensions/webstore_standalone_installer.h" 21 #include "chrome/browser/extensions/webstore_standalone_installer.h"
19 #include "chrome/browser/profiles/profile.h" 22 #include "chrome/browser/profiles/profile.h"
20 #include "chrome/browser/sessions/session_id.h" 23 #include "chrome/browser/sessions/session_id.h"
21 #include "chrome/browser/sessions/session_tab_helper.h" 24 #include "chrome/browser/sessions/session_tab_helper.h"
22 #include "chrome/browser/ui/browser_dialogs.h" 25 #include "chrome/browser/ui/browser_dialogs.h"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 78
76 TabHelper::TabHelper(content::WebContents* web_contents) 79 TabHelper::TabHelper(content::WebContents* web_contents)
77 : content::WebContentsObserver(web_contents), 80 : content::WebContentsObserver(web_contents),
78 extension_app_(NULL), 81 extension_app_(NULL),
79 ALLOW_THIS_IN_INITIALIZER_LIST( 82 ALLOW_THIS_IN_INITIALIZER_LIST(
80 extension_function_dispatcher_( 83 extension_function_dispatcher_(
81 Profile::FromBrowserContext(web_contents->GetBrowserContext()), 84 Profile::FromBrowserContext(web_contents->GetBrowserContext()),
82 this)), 85 this)),
83 pending_web_app_action_(NONE), 86 pending_web_app_action_(NONE),
84 script_executor_(new ScriptExecutor(web_contents, 87 script_executor_(new ScriptExecutor(web_contents,
85 &script_execution_observers_)) { 88 &script_execution_observers_)),
89 content_rules_registry_(
90 ExtensionSystem::Get(
91 Profile::FromBrowserContext(web_contents->GetBrowserContext()))->
92 rules_registry_service()->content_rules_registry()) {
86 // The ActiveTabPermissionManager requires a session ID; ensure this 93 // The ActiveTabPermissionManager requires a session ID; ensure this
87 // WebContents has one. 94 // WebContents has one.
88 SessionTabHelper::CreateForWebContents(web_contents); 95 SessionTabHelper::CreateForWebContents(web_contents);
89 active_tab_permission_granter_.reset(new ActiveTabPermissionGranter( 96 active_tab_permission_granter_.reset(new ActiveTabPermissionGranter(
90 web_contents, 97 web_contents,
91 SessionID::IdForTab(web_contents), 98 SessionID::IdForTab(web_contents),
92 Profile::FromBrowserContext(web_contents->GetBrowserContext()))); 99 Profile::FromBrowserContext(web_contents->GetBrowserContext())));
93 if (FeatureSwitch::script_badges()->IsEnabled()) { 100 if (FeatureSwitch::script_badges()->IsEnabled()) {
94 location_bar_controller_.reset( 101 location_bar_controller_.reset(
95 new ScriptBadgeController(web_contents, this)); 102 new ScriptBadgeController(web_contents, this));
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 184
178 void TabHelper::RenderViewCreated(RenderViewHost* render_view_host) { 185 void TabHelper::RenderViewCreated(RenderViewHost* render_view_host) {
179 render_view_host->Send( 186 render_view_host->Send(
180 new ExtensionMsg_SetTabId(render_view_host->GetRoutingID(), 187 new ExtensionMsg_SetTabId(render_view_host->GetRoutingID(),
181 SessionID::IdForTab(web_contents()))); 188 SessionID::IdForTab(web_contents())));
182 } 189 }
183 190
184 void TabHelper::DidNavigateMainFrame( 191 void TabHelper::DidNavigateMainFrame(
185 const content::LoadCommittedDetails& details, 192 const content::LoadCommittedDetails& details,
186 const content::FrameNavigateParams& params) { 193 const content::FrameNavigateParams& params) {
194 content_rules_registry_->DidNavigateMainFrame(
195 web_contents(), details, params);
196
187 if (details.is_in_page) 197 if (details.is_in_page)
188 return; 198 return;
189 199
190 Profile* profile = 200 Profile* profile =
191 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); 201 Profile::FromBrowserContext(web_contents()->GetBrowserContext());
192 ExtensionService* service = profile->GetExtensionService(); 202 ExtensionService* service = profile->GetExtensionService();
193 if (!service) 203 if (!service)
194 return; 204 return;
195 205
196 ExtensionActionManager* extension_action_manager = 206 ExtensionActionManager* extension_action_manager =
(...skipping 21 matching lines...) Expand all
218 OnInstallApplication) 228 OnInstallApplication)
219 IPC_MESSAGE_HANDLER(ExtensionHostMsg_InlineWebstoreInstall, 229 IPC_MESSAGE_HANDLER(ExtensionHostMsg_InlineWebstoreInstall,
220 OnInlineWebstoreInstall) 230 OnInlineWebstoreInstall)
221 IPC_MESSAGE_HANDLER(ExtensionHostMsg_GetAppNotifyChannel, 231 IPC_MESSAGE_HANDLER(ExtensionHostMsg_GetAppNotifyChannel,
222 OnGetAppNotifyChannel) 232 OnGetAppNotifyChannel)
223 IPC_MESSAGE_HANDLER(ExtensionHostMsg_GetAppInstallState, 233 IPC_MESSAGE_HANDLER(ExtensionHostMsg_GetAppInstallState,
224 OnGetAppInstallState); 234 OnGetAppInstallState);
225 IPC_MESSAGE_HANDLER(ExtensionHostMsg_Request, OnRequest) 235 IPC_MESSAGE_HANDLER(ExtensionHostMsg_Request, OnRequest)
226 IPC_MESSAGE_HANDLER(ExtensionHostMsg_ContentScriptsExecuting, 236 IPC_MESSAGE_HANDLER(ExtensionHostMsg_ContentScriptsExecuting,
227 OnContentScriptsExecuting) 237 OnContentScriptsExecuting)
238 IPC_MESSAGE_HANDLER(ExtensionHostMsg_OnWatchedPageChange,
239 OnWatchedPageChange)
228 IPC_MESSAGE_UNHANDLED(handled = false) 240 IPC_MESSAGE_UNHANDLED(handled = false)
229 IPC_END_MESSAGE_MAP() 241 IPC_END_MESSAGE_MAP()
230 return handled; 242 return handled;
231 } 243 }
232 244
233 void TabHelper::DidCloneToNewWebContents(WebContents* old_web_contents, 245 void TabHelper::DidCloneToNewWebContents(WebContents* old_web_contents,
234 WebContents* new_web_contents) { 246 WebContents* new_web_contents) {
235 // When the WebContents that this is attached to is cloned, give the new clone 247 // When the WebContents that this is attached to is cloned, give the new clone
236 // a TabHelper and copy state over. 248 // a TabHelper and copy state over.
237 CreateForWebContents(new_web_contents); 249 CreateForWebContents(new_web_contents);
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
406 const ScriptExecutionObserver::ExecutingScriptsMap& executing_scripts_map, 418 const ScriptExecutionObserver::ExecutingScriptsMap& executing_scripts_map,
407 int32 on_page_id, 419 int32 on_page_id,
408 const GURL& on_url) { 420 const GURL& on_url) {
409 FOR_EACH_OBSERVER(ScriptExecutionObserver, script_execution_observers_, 421 FOR_EACH_OBSERVER(ScriptExecutionObserver, script_execution_observers_,
410 OnScriptsExecuted(web_contents(), 422 OnScriptsExecuted(web_contents(),
411 executing_scripts_map, 423 executing_scripts_map,
412 on_page_id, 424 on_page_id,
413 on_url)); 425 on_url));
414 } 426 }
415 427
428 void TabHelper::OnWatchedPageChange(
429 const std::vector<std::string>& css_selectors) {
430 content_rules_registry_->Apply(web_contents(), css_selectors);
431 }
432
416 const Extension* TabHelper::GetExtension(const std::string& extension_app_id) { 433 const Extension* TabHelper::GetExtension(const std::string& extension_app_id) {
417 if (extension_app_id.empty()) 434 if (extension_app_id.empty())
418 return NULL; 435 return NULL;
419 436
420 Profile* profile = 437 Profile* profile =
421 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); 438 Profile::FromBrowserContext(web_contents()->GetBrowserContext());
422 ExtensionService* extension_service = profile->GetExtensionService(); 439 ExtensionService* extension_service = profile->GetExtensionService();
423 if (!extension_service || !extension_service->is_ready()) 440 if (!extension_service || !extension_service->is_ready())
424 return NULL; 441 return NULL;
425 442
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
512 script_bubble_controller_->OnExtensionUnloaded( 529 script_bubble_controller_->OnExtensionUnloaded(
513 content::Details<extensions::UnloadedExtensionInfo>( 530 content::Details<extensions::UnloadedExtensionInfo>(
514 details)->extension->id()); 531 details)->extension->id());
515 break; 532 break;
516 } 533 }
517 } 534 }
518 } 535 }
519 } 536 }
520 537
521 } // namespace extensions 538 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/tab_helper.h ('k') | chrome/chrome_browser_extensions.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698