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

Unified Diff: chrome/browser/extensions/extension_toolbar_model.cc

Issue 48853005: Remove ExtensionToolbarModel from ExtensionService. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Compile after rebase Created 7 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/extension_toolbar_model.cc
diff --git a/chrome/browser/extensions/extension_toolbar_model.cc b/chrome/browser/extensions/extension_toolbar_model.cc
index 34049e08100a407dbf51067cef2a2bd39d0cd612..71996caf9079a71e8c1f8f65b9baa6c52f999364 100644
--- a/chrome/browser/extensions/extension_toolbar_model.cc
+++ b/chrome/browser/extensions/extension_toolbar_model.cc
@@ -14,6 +14,7 @@
#include "chrome/browser/extensions/extension_prefs.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_tab_util.h"
+#include "chrome/browser/extensions/extension_toolbar_model_factory.h"
#include "chrome/browser/extensions/extension_util.h"
#include "chrome/browser/extensions/tab_helper.h"
#include "chrome/browser/profiles/profile.h"
@@ -49,24 +50,25 @@ bool ExtensionToolbarModel::Observer::BrowserActionShowPopup(
return false;
}
-ExtensionToolbarModel::ExtensionToolbarModel(ExtensionService* service)
- : service_(service),
- prefs_(service->profile()->GetPrefs()),
+ExtensionToolbarModel::ExtensionToolbarModel(
+ Profile* profile,
+ extensions::ExtensionPrefs* extension_prefs)
+ : profile_(profile),
+ extension_prefs_(extension_prefs),
+ prefs_(profile_->GetPrefs()),
extensions_initialized_(false),
weak_ptr_factory_(this) {
- DCHECK(service_);
-
registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED,
- content::Source<Profile>(service_->profile()));
+ content::Source<Profile>(profile_));
registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED,
- content::Source<Profile>(service_->profile()));
+ content::Source<Profile>(profile_));
registrar_.Add(this, chrome::NOTIFICATION_EXTENSIONS_READY,
- content::Source<Profile>(service_->profile()));
+ content::Source<Profile>(profile_));
registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNINSTALLED,
- content::Source<Profile>(service_->profile()));
+ content::Source<Profile>(profile_));
registrar_.Add(
this, chrome::NOTIFICATION_EXTENSION_BROWSER_ACTION_VISIBILITY_CHANGED,
- content::Source<extensions::ExtensionPrefs>(service_->extension_prefs()));
+ content::Source<extensions::ExtensionPrefs>(extension_prefs_));
visible_icon_count_ = prefs_->GetInteger(prefs::kExtensionToolbarSize);
@@ -80,6 +82,11 @@ ExtensionToolbarModel::ExtensionToolbarModel(ExtensionService* service)
ExtensionToolbarModel::~ExtensionToolbarModel() {
}
+// static
+ExtensionToolbarModel* ExtensionToolbarModel::Get(Profile* profile) {
+ return ExtensionToolbarModelFactory::GetForProfile(profile);
+}
+
void ExtensionToolbarModel::AddObserver(Observer* observer) {
observers_.AddObserver(observer);
}
@@ -144,7 +151,7 @@ ExtensionToolbarModel::Action ExtensionToolbarModel::ExecuteBrowserAction(
return ACTION_NONE;
ExtensionAction* browser_action =
- extensions::ExtensionActionManager::Get(service_->profile())->
+ extensions::ExtensionActionManager::Get(profile_)->
GetBrowserAction(*extension);
// For browser actions, visibility == enabledness.
@@ -177,13 +184,15 @@ void ExtensionToolbarModel::Observe(
int type,
const content::NotificationSource& source,
const content::NotificationDetails& details) {
- if (type == chrome::NOTIFICATION_EXTENSIONS_READY) {
- InitializeExtensionList();
+ ExtensionService* extension_service =
+ extensions::ExtensionSystem::Get(profile_)->extension_service();
+ if (!extension_service || !extension_service->is_ready())
return;
- }
- if (!service_->is_ready())
+ if (type == chrome::NOTIFICATION_EXTENSIONS_READY) {
+ InitializeExtensionList(extension_service);
return;
+ }
const Extension* extension = NULL;
if (type == chrome::NOTIFICATION_EXTENSION_UNLOADED) {
@@ -191,7 +200,7 @@ void ExtensionToolbarModel::Observe(
details)->extension;
} else if (type ==
chrome::NOTIFICATION_EXTENSION_BROWSER_ACTION_VISIBILITY_CHANGED) {
- extension = service_->GetExtensionById(
+ extension = extension_service->GetExtensionById(
*content::Details<const std::string>(details).ptr(), true);
} else {
extension = content::Details<const Extension>(details).ptr();
@@ -205,7 +214,7 @@ void ExtensionToolbarModel::Observe(
return; // Already exists.
}
if (extensions::ExtensionActionAPI::GetBrowserActionVisibility(
- service_->extension_prefs(), extension->id())) {
+ extension_prefs_, extension->id())) {
AddExtension(extension);
}
} else if (type == chrome::NOTIFICATION_EXTENSION_UNLOADED) {
@@ -215,7 +224,7 @@ void ExtensionToolbarModel::Observe(
} else if (type ==
chrome::NOTIFICATION_EXTENSION_BROWSER_ACTION_VISIBILITY_CHANGED) {
if (extensions::ExtensionActionAPI::GetBrowserActionVisibility(
- service_->extension_prefs(), extension->id())) {
+ extension_prefs_, extension->id())) {
AddExtension(extension);
} else {
RemoveExtension(extension);
@@ -251,7 +260,7 @@ size_t ExtensionToolbarModel::FindNewPositionFromLastKnownGood(
void ExtensionToolbarModel::AddExtension(const Extension* extension) {
// We only care about extensions with browser actions.
- if (!extensions::ExtensionActionManager::Get(service_->profile())->
+ if (!extensions::ExtensionActionManager::Get(profile_)->
GetBrowserAction(*extension)) {
return;
}
@@ -316,18 +325,19 @@ void ExtensionToolbarModel::UninstalledExtension(const Extension* extension) {
// have holes.
// 2. Create a vector of extensions that did not have a pref value.
// 3. Remove holes from the sorted vector and append the unsorted vector.
-void ExtensionToolbarModel::InitializeExtensionList() {
- DCHECK(service_->is_ready());
+void ExtensionToolbarModel::InitializeExtensionList(ExtensionService* service) {
+ DCHECK(service->is_ready());
- last_known_positions_ = service_->extension_prefs()->GetToolbarOrder();
- Populate(last_known_positions_);
+ last_known_positions_ = extension_prefs_->GetToolbarOrder();
+ Populate(last_known_positions_, service);
extensions_initialized_ = true;
FOR_EACH_OBSERVER(Observer, observers_, ModelLoaded());
}
void ExtensionToolbarModel::Populate(
- const extensions::ExtensionIdList& positions) {
+ const extensions::ExtensionIdList& positions,
+ ExtensionService* service) {
// Items that have explicit positions.
ExtensionList sorted;
sorted.resize(positions.size(), NULL);
@@ -335,16 +345,16 @@ void ExtensionToolbarModel::Populate(
ExtensionList unsorted;
extensions::ExtensionActionManager* extension_action_manager =
- extensions::ExtensionActionManager::Get(service_->profile());
+ extensions::ExtensionActionManager::Get(profile_);
// Create the lists.
- for (ExtensionSet::const_iterator it = service_->extensions()->begin();
- it != service_->extensions()->end(); ++it) {
+ for (ExtensionSet::const_iterator it = service->extensions()->begin();
+ it != service->extensions()->end(); ++it) {
const Extension* extension = it->get();
if (!extension_action_manager->GetBrowserAction(*extension))
continue;
if (!extensions::ExtensionActionAPI::GetBrowserActionVisibility(
- service_->extension_prefs(), extension->id())) {
+ extension_prefs_, extension->id())) {
continue;
}
@@ -386,34 +396,24 @@ void ExtensionToolbarModel::Populate(
}
}
-void ExtensionToolbarModel::FillExtensionList(
- const extensions::ExtensionIdList& order) {
- toolbar_items_.clear();
- toolbar_items_.reserve(order.size());
- for (size_t i = 0; i < order.size(); ++i) {
- const extensions::Extension* extension =
- service_->GetExtensionById(order[i], false);
- if (extension)
- AddExtension(extension);
- }
-}
-
void ExtensionToolbarModel::UpdatePrefs() {
- if (!service_->extension_prefs())
+ if (!extension_prefs_)
return;
// Don't observe change caused by self.
pref_change_registrar_.Remove(prefs::kExtensionToolbar);
- service_->extension_prefs()->SetToolbarOrder(last_known_positions_);
+ extension_prefs_->SetToolbarOrder(last_known_positions_);
pref_change_registrar_.Add(prefs::kExtensionToolbar, pref_change_callback_);
}
int ExtensionToolbarModel::IncognitoIndexToOriginal(int incognito_index) {
int original_index = 0, i = 0;
+ ExtensionService* extension_service =
+ extensions::ExtensionSystem::Get(profile_)->extension_service();
for (ExtensionList::iterator iter = toolbar_items_.begin();
iter != toolbar_items_.end();
++iter, ++original_index) {
- if (extension_util::IsIncognitoEnabled((*iter)->id(), service_)) {
+ if (extension_util::IsIncognitoEnabled((*iter)->id(), extension_service)) {
if (incognito_index == i)
break;
++i;
@@ -424,12 +424,14 @@ int ExtensionToolbarModel::IncognitoIndexToOriginal(int incognito_index) {
int ExtensionToolbarModel::OriginalIndexToIncognito(int original_index) {
int incognito_index = 0, i = 0;
+ ExtensionService* extension_service =
+ extensions::ExtensionSystem::Get(profile_)->extension_service();
for (ExtensionList::iterator iter = toolbar_items_.begin();
iter != toolbar_items_.end();
++iter, ++i) {
if (original_index == i)
break;
- if (extension_util::IsIncognitoEnabled((*iter)->id(), service_))
+ if (extension_util::IsIncognitoEnabled((*iter)->id(), extension_service))
++incognito_index;
}
return incognito_index;
@@ -443,7 +445,7 @@ void ExtensionToolbarModel::OnExtensionToolbarPrefChange() {
// Recalculate |last_known_positions_| to be |pref_positions| followed by
// ones that are only in |last_known_positions_|.
extensions::ExtensionIdList pref_positions =
- service_->extension_prefs()->GetToolbarOrder();
+ extension_prefs_->GetToolbarOrder();
size_t pref_position_size = pref_positions.size();
for (size_t i = 0; i < last_known_positions_.size(); ++i) {
if (std::find(pref_positions.begin(), pref_positions.end(),
@@ -454,7 +456,8 @@ void ExtensionToolbarModel::OnExtensionToolbarPrefChange() {
last_known_positions_.swap(pref_positions);
// Re-populate.
- Populate(last_known_positions_);
+ Populate(last_known_positions_,
+ extensions::ExtensionSystem::Get(profile_)->extension_service());
if (last_known_positions_.size() > pref_position_size) {
// Need to update pref because we have extra icons. But can't call
« no previous file with comments | « chrome/browser/extensions/extension_toolbar_model.h ('k') | chrome/browser/extensions/extension_toolbar_model_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698