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

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

Issue 666223005: Don't block shared_module extensions by the policy blacklist. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 6 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) 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 468 matching lines...) Expand 10 before | Expand all | Expand 10 after
479 // TODO(crbug.com/420147): Move this code to a utility class to avoid 479 // TODO(crbug.com/420147): Move this code to a utility class to avoid
480 // duplication of SharedModuleService::CheckImports code. 480 // duplication of SharedModuleService::CheckImports code.
481 if (SharedModuleInfo::ImportsModules(extension())) { 481 if (SharedModuleInfo::ImportsModules(extension())) {
482 const std::vector<SharedModuleInfo::ImportInfo>& imports = 482 const std::vector<SharedModuleInfo::ImportInfo>& imports =
483 SharedModuleInfo::GetImports(extension()); 483 SharedModuleInfo::GetImports(extension());
484 std::vector<SharedModuleInfo::ImportInfo>::const_iterator i; 484 std::vector<SharedModuleInfo::ImportInfo>::const_iterator i;
485 for (i = imports.begin(); i != imports.end(); ++i) { 485 for (i = imports.begin(); i != imports.end(); ++i) {
486 Version version_required(i->minimum_version); 486 Version version_required(i->minimum_version);
487 const Extension* imported_module = 487 const Extension* imported_module =
488 service->GetExtensionById(i->extension_id, true); 488 service->GetExtensionById(i->extension_id, true);
489 if (!imported_module) { 489 if (imported_module &&
elijahtaylor1 2014/10/22 16:40:01 As I stated in the other CL, this is probably ok.
Joao da Silva 2014/10/22 18:31:05 If you agree then it would be great to do this fix
elijahtaylor1 2014/10/22 19:57:49 I don't know much about external_loaders, but if w
Joao da Silva 2014/10/23 09:15:02 I think the drag-and-drop flow is the same as the
490 ReportFailureFromUIThread(CrxInstallerError(l10n_util::GetStringFUTF16( 490 !SharedModuleInfo::IsSharedModule(imported_module)) {
491 IDS_EXTENSION_INSTALL_DEPENDENCY_NOT_FOUND,
492 base::ASCIIToUTF16(i->extension_id),
493 base::ASCIIToUTF16(i->minimum_version))));
494 return;
495 } else if (imported_module &&
496 !SharedModuleInfo::IsSharedModule(imported_module)) {
497 ReportFailureFromUIThread(CrxInstallerError(l10n_util::GetStringFUTF16( 491 ReportFailureFromUIThread(CrxInstallerError(l10n_util::GetStringFUTF16(
498 IDS_EXTENSION_INSTALL_DEPENDENCY_NOT_SHARED_MODULE, 492 IDS_EXTENSION_INSTALL_DEPENDENCY_NOT_SHARED_MODULE,
499 base::UTF8ToUTF16(imported_module->name())))); 493 base::UTF8ToUTF16(imported_module->name()))));
500 return; 494 return;
501 } else if (imported_module && (version_required.IsValid() && 495 } else if (imported_module && (version_required.IsValid() &&
elijahtaylor1 2014/10/22 16:45:17 one rare-ish edge-case here to consider: It is pos
Joao da Silva 2014/10/22 18:31:05 Yes. Basically requests to install an extension vi
502 imported_module->version()->CompareTo( 496 imported_module->version()->CompareTo(
503 version_required) < 0)) { 497 version_required) < 0)) {
504 ReportFailureFromUIThread(CrxInstallerError(l10n_util::GetStringFUTF16( 498 ReportFailureFromUIThread(CrxInstallerError(l10n_util::GetStringFUTF16(
505 IDS_EXTENSION_INSTALL_DEPENDENCY_OLD_VERSION, 499 IDS_EXTENSION_INSTALL_DEPENDENCY_OLD_VERSION,
506 base::UTF8ToUTF16(imported_module->name()), 500 base::UTF8ToUTF16(imported_module->name()),
507 base::ASCIIToUTF16(i->minimum_version), 501 base::ASCIIToUTF16(i->minimum_version),
508 base::ASCIIToUTF16(imported_module->version()->GetString())))); 502 base::ASCIIToUTF16(imported_module->version()->GetString()))));
509 return; 503 return;
510 } else if (imported_module && 504 } else if (imported_module &&
511 !SharedModuleInfo::IsExportAllowedByWhitelist(imported_module, 505 !SharedModuleInfo::IsExportAllowedByWhitelist(
512 extension()->id())) { 506 imported_module, extension()->id())) {
513 ReportFailureFromUIThread(CrxInstallerError(l10n_util::GetStringFUTF16( 507 ReportFailureFromUIThread(CrxInstallerError(l10n_util::GetStringFUTF16(
514 IDS_EXTENSION_INSTALL_DEPENDENCY_NOT_WHITELISTED, 508 IDS_EXTENSION_INSTALL_DEPENDENCY_NOT_WHITELISTED,
515 base::UTF8ToUTF16(extension()->name()), 509 base::UTF8ToUTF16(extension()->name()),
516 base::UTF8ToUTF16(imported_module->name())))); 510 base::UTF8ToUTF16(imported_module->name()))));
517 return; 511 return;
518 } 512 }
519 } 513 }
520 } 514 }
521 515
522 // Run the policy, requirements and blacklist checks in parallel. 516 // Run the policy, requirements and blacklist checks in parallel.
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after
907 if (!prefs->DidExtensionEscalatePermissions(extension()->id())) 901 if (!prefs->DidExtensionEscalatePermissions(extension()->id()))
908 return; 902 return;
909 903
910 if (client_) { 904 if (client_) {
911 AddRef(); // Balanced in InstallUIProceed() and InstallUIAbort(). 905 AddRef(); // Balanced in InstallUIProceed() and InstallUIAbort().
912 client_->ConfirmReEnable(this, extension()); 906 client_->ConfirmReEnable(this, extension());
913 } 907 }
914 } 908 }
915 909
916 } // namespace extensions 910 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698