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

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

Issue 14973007: Auto-install/uninstall shared module dependencies for extensions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 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
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 393 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 return; 404 return;
405 405
406 if (SharedModuleInfo::ImportsModules(extension())) { 406 if (SharedModuleInfo::ImportsModules(extension())) {
407 const std::vector<SharedModuleInfo::ImportInfo>& imports = 407 const std::vector<SharedModuleInfo::ImportInfo>& imports =
408 SharedModuleInfo::GetImports(extension()); 408 SharedModuleInfo::GetImports(extension());
409 std::vector<SharedModuleInfo::ImportInfo>::const_iterator i; 409 std::vector<SharedModuleInfo::ImportInfo>::const_iterator i;
410 for (i = imports.begin(); i != imports.end(); ++i) { 410 for (i = imports.begin(); i != imports.end(); ++i) {
411 Version version_required(i->minimum_version); 411 Version version_required(i->minimum_version);
412 const Extension* imported_module = 412 const Extension* imported_module =
413 service->GetExtensionById(i->extension_id, true); 413 service->GetExtensionById(i->extension_id, true);
414 if (!imported_module || 414 if (imported_module &&
415 (version_required.IsValid() && 415 !SharedModuleInfo::IsSharedModule(imported_module)) {
416 imported_module->version()->CompareTo(version_required) < 0)) {
417 ReportFailureFromUIThread(
418 CrxInstallerError(l10n_util::GetStringFUTF16(
419 IDS_EXTENSION_INSTALL_DEPENDENCY_NOT_FOUND,
420 ASCIIToUTF16(i->extension_id),
421 ASCIIToUTF16(i->minimum_version))));
422 return;
423 }
424 if (!SharedModuleInfo::IsSharedModule(imported_module)) {
425 ReportFailureFromUIThread( 416 ReportFailureFromUIThread(
426 CrxInstallerError(l10n_util::GetStringFUTF16( 417 CrxInstallerError(l10n_util::GetStringFUTF16(
427 IDS_EXTENSION_INSTALL_DEPENDENCY_NOT_SHARED_MODULE, 418 IDS_EXTENSION_INSTALL_DEPENDENCY_NOT_SHARED_MODULE,
428 ASCIIToUTF16(i->extension_id)))); 419 ASCIIToUTF16(i->extension_id))));
429 return; 420 return;
430 } 421 }
431 } 422 }
432 } 423 }
433 installer_.CheckRequirements(base::Bind(&CrxInstaller::OnRequirementsChecked, 424 installer_.CheckRequirements(base::Bind(&CrxInstaller::OnRequirementsChecked,
434 this)); 425 this));
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
808 if (!prefs->DidExtensionEscalatePermissions(extension()->id())) 799 if (!prefs->DidExtensionEscalatePermissions(extension()->id()))
809 return; 800 return;
810 801
811 if (client_) { 802 if (client_) {
812 AddRef(); // Balanced in InstallUIProceed() and InstallUIAbort(). 803 AddRef(); // Balanced in InstallUIProceed() and InstallUIAbort().
813 client_->ConfirmReEnable(this, extension()); 804 client_->ConfirmReEnable(this, extension());
814 } 805 }
815 } 806 }
816 807
817 } // namespace extensions 808 } // namespace extensions
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/extensions/extension_service.h » ('j') | chrome/browser/extensions/extension_service.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698