| OLD | NEW |
| 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 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 290 } | 290 } |
| 291 | 291 |
| 292 // Make sure the manifests match if we want to bypass the prompt. | 292 // Make sure the manifests match if we want to bypass the prompt. |
| 293 if (approved_) { | 293 if (approved_) { |
| 294 bool valid = false; | 294 bool valid = false; |
| 295 if (expected_manifest_check_level_ == | 295 if (expected_manifest_check_level_ == |
| 296 WebstoreInstaller::MANIFEST_CHECK_LEVEL_NONE) { | 296 WebstoreInstaller::MANIFEST_CHECK_LEVEL_NONE) { |
| 297 // To skip manifest checking, the extension must be a shared module | 297 // To skip manifest checking, the extension must be a shared module |
| 298 // and not request any permissions. | 298 // and not request any permissions. |
| 299 if (SharedModuleInfo::IsSharedModule(extension) && | 299 if (SharedModuleInfo::IsSharedModule(extension) && |
| 300 PermissionsData::ForExtension(extension) | 300 extension->permissions_data()->active_permissions()->IsEmpty()) { |
| 301 ->active_permissions() | |
| 302 ->IsEmpty()) { | |
| 303 valid = true; | 301 valid = true; |
| 304 } | 302 } |
| 305 } else { | 303 } else { |
| 306 valid = expected_manifest_->Equals(original_manifest_.get()); | 304 valid = expected_manifest_->Equals(original_manifest_.get()); |
| 307 if (!valid && expected_manifest_check_level_ == | 305 if (!valid && expected_manifest_check_level_ == |
| 308 WebstoreInstaller::MANIFEST_CHECK_LEVEL_LOOSE) { | 306 WebstoreInstaller::MANIFEST_CHECK_LEVEL_LOOSE) { |
| 309 std::string error; | 307 std::string error; |
| 310 scoped_refptr<Extension> dummy_extension = | 308 scoped_refptr<Extension> dummy_extension = |
| 311 Extension::Create(base::FilePath(), | 309 Extension::Create(base::FilePath(), |
| 312 install_source_, | 310 install_source_, |
| 313 *expected_manifest_->value(), | 311 *expected_manifest_->value(), |
| 314 creation_flags_, | 312 creation_flags_, |
| 315 &error); | 313 &error); |
| 316 if (error.empty()) { | 314 if (error.empty()) { |
| 317 scoped_refptr<const PermissionSet> expected_permissions = | 315 scoped_refptr<const PermissionSet> expected_permissions = |
| 318 PermissionsData::ForExtension(dummy_extension) | 316 dummy_extension->permissions_data()->active_permissions(); |
| 319 ->active_permissions(); | |
| 320 valid = !(PermissionMessageProvider::Get()->IsPrivilegeIncrease( | 317 valid = !(PermissionMessageProvider::Get()->IsPrivilegeIncrease( |
| 321 expected_permissions, | 318 expected_permissions, |
| 322 PermissionsData::ForExtension(extension)->active_permissions(), | 319 extension->permissions_data()->active_permissions(), |
| 323 extension->GetType())); | 320 extension->GetType())); |
| 324 } | 321 } |
| 325 } | 322 } |
| 326 } | 323 } |
| 327 | 324 |
| 328 if (!valid) | 325 if (!valid) |
| 329 return CrxInstallerError( | 326 return CrxInstallerError( |
| 330 l10n_util::GetStringUTF16(IDS_EXTENSION_MANIFEST_INVALID)); | 327 l10n_util::GetStringUTF16(IDS_EXTENSION_MANIFEST_INVALID)); |
| 331 } | 328 } |
| 332 | 329 |
| (...skipping 577 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 910 if (!prefs->DidExtensionEscalatePermissions(extension()->id())) | 907 if (!prefs->DidExtensionEscalatePermissions(extension()->id())) |
| 911 return; | 908 return; |
| 912 | 909 |
| 913 if (client_) { | 910 if (client_) { |
| 914 AddRef(); // Balanced in InstallUIProceed() and InstallUIAbort(). | 911 AddRef(); // Balanced in InstallUIProceed() and InstallUIAbort(). |
| 915 client_->ConfirmReEnable(this, extension()); | 912 client_->ConfirmReEnable(this, extension()); |
| 916 } | 913 } |
| 917 } | 914 } |
| 918 | 915 |
| 919 } // namespace extensions | 916 } // namespace extensions |
| OLD | NEW |