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

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

Issue 263703002: Allow shared modules to whitelist extensions that import them. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: feedback Created 6 years, 7 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/app/generated_resources.grd ('k') | chrome/browser/extensions/shared_module_apitest.cc » ('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/crx_installer.h" 5 #include "chrome/browser/extensions/crx_installer.h"
6 6
7 #include <map> 7 #include <map>
8 #include <set> 8 #include <set>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 DCHECK_CURRENTLY_ON(BrowserThread::UI); 484 DCHECK_CURRENTLY_ON(BrowserThread::UI);
485 ExtensionService* service = service_weak_.get(); 485 ExtensionService* service = service_weak_.get();
486 if (!service || service->browser_terminating()) 486 if (!service || service->browser_terminating())
487 return; 487 return;
488 488
489 if (SharedModuleInfo::ImportsModules(extension())) { 489 if (SharedModuleInfo::ImportsModules(extension())) {
490 const std::vector<SharedModuleInfo::ImportInfo>& imports = 490 const std::vector<SharedModuleInfo::ImportInfo>& imports =
491 SharedModuleInfo::GetImports(extension()); 491 SharedModuleInfo::GetImports(extension());
492 std::vector<SharedModuleInfo::ImportInfo>::const_iterator i; 492 std::vector<SharedModuleInfo::ImportInfo>::const_iterator i;
493 for (i = imports.begin(); i != imports.end(); ++i) { 493 for (i = imports.begin(); i != imports.end(); ++i) {
494 Version version_required(i->minimum_version);
495 const Extension* imported_module = 494 const Extension* imported_module =
496 service->GetExtensionById(i->extension_id, true); 495 service->GetExtensionById(i->extension_id, true);
497 if (imported_module && 496 if (imported_module &&
498 !SharedModuleInfo::IsSharedModule(imported_module)) { 497 !SharedModuleInfo::IsSharedModule(imported_module)) {
499 ReportFailureFromUIThread( 498 ReportFailureFromUIThread(
500 CrxInstallerError(l10n_util::GetStringFUTF16( 499 CrxInstallerError(l10n_util::GetStringFUTF16(
501 IDS_EXTENSION_INSTALL_DEPENDENCY_NOT_SHARED_MODULE, 500 IDS_EXTENSION_INSTALL_DEPENDENCY_NOT_SHARED_MODULE,
502 base::ASCIIToUTF16(i->extension_id)))); 501 base::ASCIIToUTF16(i->extension_id))));
503 return; 502 return;
503 } else if (imported_module &&
504 !SharedModuleInfo::IsExportAllowedByWhitelist(imported_module,
505 extension()->id())) {
506 ReportFailureFromUIThread(
507 CrxInstallerError(l10n_util::GetStringFUTF16(
508 IDS_EXTENSION_INSTALL_DEPENDENCY_NOT_WHITELISTED,
509 base::ASCIIToUTF16(i->extension_id))));
510 return;
504 } 511 }
505 } 512 }
506 } 513 }
507 installer_.CheckRequirements(base::Bind(&CrxInstaller::OnRequirementsChecked, 514 installer_.CheckRequirements(base::Bind(&CrxInstaller::OnRequirementsChecked,
508 this)); 515 this));
509 } 516 }
510 517
511 void CrxInstaller::OnRequirementsChecked( 518 void CrxInstaller::OnRequirementsChecked(
512 std::vector<std::string> requirement_errors) { 519 std::vector<std::string> requirement_errors) {
513 DCHECK_CURRENTLY_ON(BrowserThread::UI); 520 DCHECK_CURRENTLY_ON(BrowserThread::UI);
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after
890 if (!prefs->DidExtensionEscalatePermissions(extension()->id())) 897 if (!prefs->DidExtensionEscalatePermissions(extension()->id()))
891 return; 898 return;
892 899
893 if (client_) { 900 if (client_) {
894 AddRef(); // Balanced in InstallUIProceed() and InstallUIAbort(). 901 AddRef(); // Balanced in InstallUIProceed() and InstallUIAbort().
895 client_->ConfirmReEnable(this, extension()); 902 client_->ConfirmReEnable(this, extension());
896 } 903 }
897 } 904 }
898 905
899 } // namespace extensions 906 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/app/generated_resources.grd ('k') | chrome/browser/extensions/shared_module_apitest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698