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

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

Issue 345493002: Promotion of ephemeral apps now handles permission escalation correctly (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 6 years, 6 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
« no previous file with comments | « chrome/browser/apps/ephemeral_app_browsertest.cc ('k') | no next file » | 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) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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/extension_service.h" 5 #include "chrome/browser/extensions/extension_service.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <iterator> 8 #include <iterator>
9 #include <set> 9 #include <set>
10 10
(...skipping 2008 matching lines...) Expand 10 before | Expand all | Expand 10 after
2019 2019
2020 if (!is_from_sync) { 2020 if (!is_from_sync) {
2021 if (extension->RequiresSortOrdinal()) { 2021 if (extension->RequiresSortOrdinal()) {
2022 // Reset the sort ordinals of the app to ensure it is added to the default 2022 // Reset the sort ordinals of the app to ensure it is added to the default
2023 // position, like newly installed apps would. 2023 // position, like newly installed apps would.
2024 extension_prefs_->app_sorting()->ClearOrdinals(extension->id()); 2024 extension_prefs_->app_sorting()->ClearOrdinals(extension->id());
2025 extension_prefs_->app_sorting()->EnsureValidOrdinals( 2025 extension_prefs_->app_sorting()->EnsureValidOrdinals(
2026 extension->id(), syncer::StringOrdinal()); 2026 extension->id(), syncer::StringOrdinal());
2027 } 2027 }
2028 2028
2029 if (extension_prefs_->IsExtensionDisabled(extension->id()) && 2029 // Cached ephemeral apps may be updated and disabled due to permissions
2030 !extension_prefs_->IsExtensionBlacklisted(extension->id())) { 2030 // increase. The app can be enabled as the install was user-acknowledged.
2031 // If the extension is not blacklisted and was disabled due to permission 2031 if (extension_prefs_->DidExtensionEscalatePermissions(extension->id()))
2032 // increase or user action only, we can enable it because the user was 2032 GrantPermissionsAndEnableExtension(extension);
2033 // prompted.
2034 extension_prefs_->RemoveDisableReason(
2035 extension->id(),
2036 Extension::DISABLE_PERMISSIONS_INCREASE);
2037 extension_prefs_->RemoveDisableReason(
2038 extension->id(),
2039 Extension::DISABLE_USER_ACTION);
2040 if (!extension_prefs_->GetDisableReasons(extension->id()))
2041 EnableExtension(extension->id());
2042 }
2043 } 2033 }
2044 2034
2045 // Remove the ephemeral flags from the preferences. 2035 // Remove the ephemeral flags from the preferences.
2046 extension_prefs_->OnEphemeralAppPromoted(extension->id()); 2036 extension_prefs_->OnEphemeralAppPromoted(extension->id());
2047 2037
2048 // Fire install-related events to allow observers to handle the promotion 2038 // Fire install-related events to allow observers to handle the promotion
2049 // of the ephemeral app. 2039 // of the ephemeral app.
2050 extensions::InstalledExtensionInfo details( 2040 extensions::InstalledExtensionInfo details(
2051 extension, 2041 extension,
2052 true /* is update */, 2042 true /* is update */,
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after
2545 } 2535 }
2546 2536
2547 void ExtensionService::OnProfileDestructionStarted() { 2537 void ExtensionService::OnProfileDestructionStarted() {
2548 ExtensionIdSet ids_to_unload = registry_->enabled_extensions().GetIDs(); 2538 ExtensionIdSet ids_to_unload = registry_->enabled_extensions().GetIDs();
2549 for (ExtensionIdSet::iterator it = ids_to_unload.begin(); 2539 for (ExtensionIdSet::iterator it = ids_to_unload.begin();
2550 it != ids_to_unload.end(); 2540 it != ids_to_unload.end();
2551 ++it) { 2541 ++it) {
2552 UnloadExtension(*it, UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN); 2542 UnloadExtension(*it, UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN);
2553 } 2543 }
2554 } 2544 }
OLDNEW
« no previous file with comments | « chrome/browser/apps/ephemeral_app_browsertest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698