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

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

Issue 415813003: Improve extension icon prediction (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Simplify icon logic, clean up unit tests Created 6 years, 4 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 "chrome/browser/extensions/active_script_controller.h" 5 #include "chrome/browser/extensions/active_script_controller.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
11 #include "base/stl_util.h" 11 #include "base/stl_util.h"
12 #include "chrome/browser/extensions/active_tab_permission_granter.h" 12 #include "chrome/browser/extensions/active_tab_permission_granter.h"
13 #include "chrome/browser/extensions/extension_action.h" 13 #include "chrome/browser/extensions/extension_action.h"
14 #include "chrome/browser/extensions/extension_action_manager.h"
14 #include "chrome/browser/extensions/extension_util.h" 15 #include "chrome/browser/extensions/extension_util.h"
15 #include "chrome/browser/extensions/location_bar_controller.h" 16 #include "chrome/browser/extensions/location_bar_controller.h"
16 #include "chrome/browser/extensions/tab_helper.h" 17 #include "chrome/browser/extensions/tab_helper.h"
18 #include "chrome/browser/profiles/profile.h"
17 #include "chrome/browser/sessions/session_id.h" 19 #include "chrome/browser/sessions/session_id.h"
18 #include "chrome/common/extensions/api/extension_action/action_info.h" 20 #include "chrome/common/extensions/api/extension_action/action_info.h"
19 #include "content/public/browser/navigation_controller.h" 21 #include "content/public/browser/navigation_controller.h"
20 #include "content/public/browser/navigation_entry.h" 22 #include "content/public/browser/navigation_entry.h"
21 #include "content/public/browser/render_view_host.h" 23 #include "content/public/browser/render_view_host.h"
22 #include "content/public/browser/web_contents.h" 24 #include "content/public/browser/web_contents.h"
23 #include "extensions/browser/extension_registry.h" 25 #include "extensions/browser/extension_registry.h"
24 #include "extensions/common/extension.h" 26 #include "extensions/common/extension.h"
25 #include "extensions/common/extension_messages.h" 27 #include "extensions/common/extension_messages.h"
26 #include "extensions/common/extension_set.h" 28 #include "extensions/common/extension_set.h"
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 ExtensionAction* ActiveScriptController::GetActionForExtension( 105 ExtensionAction* ActiveScriptController::GetActionForExtension(
104 const Extension* extension) { 106 const Extension* extension) {
105 if (!enabled_ || pending_requests_.count(extension->id()) == 0) 107 if (!enabled_ || pending_requests_.count(extension->id()) == 0)
106 return NULL; // No action for this extension. 108 return NULL; // No action for this extension.
107 109
108 ActiveScriptMap::iterator existing = 110 ActiveScriptMap::iterator existing =
109 active_script_actions_.find(extension->id()); 111 active_script_actions_.find(extension->id());
110 if (existing != active_script_actions_.end()) 112 if (existing != active_script_actions_.end())
111 return existing->second.get(); 113 return existing->second.get();
112 114
113 linked_ptr<ExtensionAction> action(new ExtensionAction( 115 linked_ptr<ExtensionAction> action(ExtensionActionManager::Get(
114 extension->id(), ActionInfo::TYPE_PAGE, ActionInfo())); 116 Profile::FromBrowserContext(web_contents()->GetBrowserContext()))
not at google - send to devlin 2014/08/07 22:14:15 you don't need to cast from a Profile, you can dir
gpdavis 2014/08/07 23:48:34 Compiler: "cannot initialize a parameter of type '
not at google - send to devlin 2014/08/08 00:21:07 ah, right. I had assumed that ExtensionActionManag
115 action->SetTitle(ExtensionAction::kDefaultTabId, extension->name()); 117 ->GetBestFitAction(*extension, ActionInfo::TYPE_PAGE).release());
116 action->SetIsVisible(ExtensionAction::kDefaultTabId, true); 118 action->SetIsVisible(ExtensionAction::kDefaultTabId, true);
117 119
118 const ActionInfo* action_info = ActionInfo::GetPageActionInfo(extension);
119 if (!action_info)
120 action_info = ActionInfo::GetBrowserActionInfo(extension);
121
122 if (action_info && !action_info->default_icon.empty()) {
123 action->set_default_icon(
124 make_scoped_ptr(new ExtensionIconSet(action_info->default_icon)));
125 }
126
127 active_script_actions_[extension->id()] = action; 120 active_script_actions_[extension->id()] = action;
128 return action.get(); 121 return action.get();
129 } 122 }
130 123
131 LocationBarController::Action ActiveScriptController::OnClicked( 124 LocationBarController::Action ActiveScriptController::OnClicked(
132 const Extension* extension) { 125 const Extension* extension) {
133 DCHECK(ContainsKey(pending_requests_, extension->id())); 126 DCHECK(ContainsKey(pending_requests_, extension->id()));
134 RunPendingForExtension(extension); 127 RunPendingForExtension(extension);
135 return LocationBarController::ACTION_NONE; 128 return LocationBarController::ACTION_NONE;
136 } 129 }
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 UMA_HISTOGRAM_COUNTS_100( 306 UMA_HISTOGRAM_COUNTS_100(
314 "Extensions.ActiveScriptController.PermittedExtensions", 307 "Extensions.ActiveScriptController.PermittedExtensions",
315 permitted_extensions_.size()); 308 permitted_extensions_.size());
316 UMA_HISTOGRAM_COUNTS_100( 309 UMA_HISTOGRAM_COUNTS_100(
317 "Extensions.ActiveScriptController.DeniedExtensions", 310 "Extensions.ActiveScriptController.DeniedExtensions",
318 pending_requests_.size()); 311 pending_requests_.size());
319 } 312 }
320 } 313 }
321 314
322 } // namespace extensions 315 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698