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

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

Issue 306044: Refactor implementation of BrowserActions, and add support for (Closed)
Patch Set: Make it work on linux too Created 11 years, 2 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 (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 "chrome/browser/extensions/extensions_service.h" 5 #include "chrome/browser/extensions/extensions_service.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/file_util.h" 8 #include "base/file_util.h"
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "base/values.h" 10 #include "base/values.h"
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 134
135 // TODO(erikkay) this should probably be deferred to a future point 135 // TODO(erikkay) this should probably be deferred to a future point
136 // rather than running immediately at startup. 136 // rather than running immediately at startup.
137 CheckForExternalUpdates(); 137 CheckForExternalUpdates();
138 138
139 // TODO(erikkay) this should probably be deferred as well. 139 // TODO(erikkay) this should probably be deferred as well.
140 GarbageCollectExtensions(); 140 GarbageCollectExtensions();
141 } 141 }
142 142
143 std::vector<ExtensionAction*> ExtensionsService::GetPageActions() const { 143 std::vector<ExtensionAction*> ExtensionsService::GetPageActions() const {
144 return GetExtensionActions(ExtensionAction::PAGE_ACTION, true); 144 std::vector<ExtensionAction*> result;
145 }
146 145
147 std::vector<ExtensionAction*> ExtensionsService::GetBrowserActions( 146 // TODO(finnur): Sort the icons in some meaningful way.
148 bool include_popups) const { 147 for (ExtensionList::const_iterator iter = extensions_.begin();
149 return GetExtensionActions(ExtensionAction::BROWSER_ACTION, include_popups); 148 iter != extensions_.end(); ++iter) {
149 if ((*iter)->page_action())
150 result.push_back((*iter)->page_action());
151 }
152
153 return result;
150 } 154 }
151 155
152 void ExtensionsService::InstallExtension(const FilePath& extension_path) { 156 void ExtensionsService::InstallExtension(const FilePath& extension_path) {
153 CrxInstaller::Start(extension_path, install_directory_, Extension::INTERNAL, 157 CrxInstaller::Start(extension_path, install_directory_, Extension::INTERNAL,
154 "", // no expected id 158 "", // no expected id
155 false, // don't delete crx when complete 159 false, // don't delete crx when complete
156 true, // allow privilege increase 160 true, // allow privilege increase
157 backend_loop_, 161 backend_loop_,
158 this, 162 this,
159 NULL); // no client (silent install) 163 NULL); // no client (silent install)
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 profile_->GetRequestContext()); 360 profile_->GetRequestContext());
357 if (context) { 361 if (context) {
358 g_browser_process->io_thread()->message_loop()->PostTask(FROM_HERE, 362 g_browser_process->io_thread()->message_loop()->PostTask(FROM_HERE,
359 NewRunnableMethod(context, 363 NewRunnableMethod(context,
360 &ChromeURLRequestContext::OnUnloadedExtension, 364 &ChromeURLRequestContext::OnUnloadedExtension,
361 extension->id())); 365 extension->id()));
362 } 366 }
363 } 367 }
364 } 368 }
365 369
366 std::vector<ExtensionAction*> ExtensionsService::GetExtensionActions(
367 ExtensionAction::ExtensionActionType action_type,
368 bool include_popups) const {
369 std::vector<ExtensionAction*> result;
370
371 // TODO(finnur): Sort the icons in some meaningful way.
372 for (ExtensionList::const_iterator iter = extensions_.begin();
373 iter != extensions_.end(); ++iter) {
374 if (action_type == ExtensionAction::PAGE_ACTION) {
375 ExtensionAction* page_action = (*iter)->page_action();
376 if (page_action && (include_popups || !page_action->is_popup())) {
377 result.push_back(page_action);
378 }
379 } else {
380 ExtensionAction* browser_action = (*iter)->browser_action();
381 if (browser_action && (include_popups || !browser_action->is_popup()))
382 result.push_back(browser_action);
383 }
384 }
385
386 return result;
387 }
388
389 void ExtensionsService::UpdateExtensionBlacklist( 370 void ExtensionsService::UpdateExtensionBlacklist(
390 const std::vector<std::string>& blacklist) { 371 const std::vector<std::string>& blacklist) {
391 // Use this set to indicate if an extension in the blacklist has been used. 372 // Use this set to indicate if an extension in the blacklist has been used.
392 std::set<std::string> blacklist_set; 373 std::set<std::string> blacklist_set;
393 for (unsigned int i = 0; i < blacklist.size(); ++i) { 374 for (unsigned int i = 0; i < blacklist.size(); ++i) {
394 if (Extension::IdIsValid(blacklist[i])) { 375 if (Extension::IdIsValid(blacklist[i])) {
395 blacklist_set.insert(blacklist[i]); 376 blacklist_set.insert(blacklist[i]);
396 } 377 }
397 } 378 }
398 extension_prefs_->UpdateBlacklist(blacklist_set); 379 extension_prefs_->UpdateBlacklist(blacklist_set);
(...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after
841 linked_ptr<ExternalExtensionProvider>(test_provider); 822 linked_ptr<ExternalExtensionProvider>(test_provider);
842 } 823 }
843 824
844 void ExtensionsServiceBackend::OnExternalExtensionFound( 825 void ExtensionsServiceBackend::OnExternalExtensionFound(
845 const std::string& id, const Version* version, const FilePath& path, 826 const std::string& id, const Version* version, const FilePath& path,
846 Extension::Location location) { 827 Extension::Location location) {
847 frontend_loop_->PostTask(FROM_HERE, NewRunnableMethod(frontend_, 828 frontend_loop_->PostTask(FROM_HERE, NewRunnableMethod(frontend_,
848 &ExtensionsService::OnExternalExtensionFound, id, version->GetString(), 829 &ExtensionsService::OnExternalExtensionFound, id, version->GetString(),
849 path, location)); 830 path, location));
850 } 831 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extensions_service.h ('k') | chrome/browser/gtk/browser_actions_toolbar_gtk.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698