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

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

Issue 8399022: Add a couple of notifications related settings to app/extensions sync: (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 1 month 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
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 <set> 8 #include <set>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 888 matching lines...) Expand 10 before | Expand all | Expand 10 after
899 } 899 }
900 return false; 900 return false;
901 } 901 }
902 902
903 // Extract the data we need for sync now, but don't actually sync until we've 903 // Extract the data we need for sync now, but don't actually sync until we've
904 // completed the uninstallation. 904 // completed the uninstallation.
905 SyncBundle* sync_bundle = GetSyncBundleForExtension(*extension); 905 SyncBundle* sync_bundle = GetSyncBundleForExtension(*extension);
906 906
907 SyncChange sync_change; 907 SyncChange sync_change;
908 if (sync_bundle) { 908 if (sync_bundle) {
909 ExtensionSyncData extension_sync_data(*extension, 909 ExtensionSyncData extension_sync_data(
910 IsExtensionEnabled(extension_id), 910 *extension,
911 IsIncognitoEnabled(extension_id)); 911 IsExtensionEnabled(extension_id),
912 IsIncognitoEnabled(extension_id),
913 IsNotificationsInitialSetupDone(extension_id),
914 IsNotificationsDisabled(extension_id));
912 sync_change = extension_sync_data.GetSyncChange(SyncChange::ACTION_DELETE); 915 sync_change = extension_sync_data.GetSyncChange(SyncChange::ACTION_DELETE);
913 } 916 }
914 917
915 UMA_HISTOGRAM_ENUMERATION("Extensions.UninstallType", 918 UMA_HISTOGRAM_ENUMERATION("Extensions.UninstallType",
916 extension->GetType(), 100); 919 extension->GetType(), 100);
917 RecordPermissionMessagesHistogram( 920 RecordPermissionMessagesHistogram(
918 extension, "Extensions.Permissions_Uninstall"); 921 extension, "Extensions.Permissions_Uninstall");
919 922
920 TemplateURLService* url_service = 923 TemplateURLService* url_service =
921 TemplateURLServiceFactory::GetForProfile(profile_); 924 TemplateURLServiceFactory::GetForProfile(profile_);
(...skipping 818 matching lines...) Expand 10 before | Expand all | Expand 10 after
1740 } 1743 }
1741 1744
1742 bool ExtensionService::SyncBundle::HasPendingExtensionId(const std::string& id) 1745 bool ExtensionService::SyncBundle::HasPendingExtensionId(const std::string& id)
1743 const { 1746 const {
1744 return pending_sync_data.find(id) != pending_sync_data.end(); 1747 return pending_sync_data.find(id) != pending_sync_data.end();
1745 } 1748 }
1746 1749
1747 void ExtensionService::SyncExtensionChangeIfNeeded(const Extension& extension) { 1750 void ExtensionService::SyncExtensionChangeIfNeeded(const Extension& extension) {
1748 SyncBundle* sync_bundle = GetSyncBundleForExtension(extension); 1751 SyncBundle* sync_bundle = GetSyncBundleForExtension(extension);
1749 if (sync_bundle) { 1752 if (sync_bundle) {
1750 ExtensionSyncData extension_sync_data(extension, 1753 ExtensionSyncData extension_sync_data(
1751 IsExtensionEnabled(extension.id()), 1754 extension,
1752 IsIncognitoEnabled(extension.id())); 1755 IsExtensionEnabled(extension.id()),
1756 IsIncognitoEnabled(extension.id()),
1757 IsNotificationsInitialSetupDone(extension.id()),
1758 IsNotificationsDisabled(extension.id()));
1753 1759
1754 SyncChangeList sync_change_list(1, extension_sync_data.GetSyncChange( 1760 SyncChangeList sync_change_list(1, extension_sync_data.GetSyncChange(
1755 sync_bundle->HasExtensionId(extension.id()) ? 1761 sync_bundle->HasExtensionId(extension.id()) ?
1756 SyncChange::ACTION_UPDATE : SyncChange::ACTION_ADD)); 1762 SyncChange::ACTION_UPDATE : SyncChange::ACTION_ADD));
1757 sync_bundle->sync_processor->ProcessSyncChanges( 1763 sync_bundle->sync_processor->ProcessSyncChanges(
1758 FROM_HERE, sync_change_list); 1764 FROM_HERE, sync_change_list);
1759 sync_bundle->synced_extensions.insert(extension.id()); 1765 sync_bundle->synced_extensions.insert(extension.id());
1760 sync_bundle->pending_sync_data.erase(extension.id()); 1766 sync_bundle->pending_sync_data.erase(extension.id());
1761 } 1767 }
1762 } 1768 }
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
1905 it != extensions.end(); ++it) { 1911 it != extensions.end(); ++it) {
1906 const Extension& extension = **it; 1912 const Extension& extension = **it;
1907 if (bundle.filter(extension) && 1913 if (bundle.filter(extension) &&
1908 // If we have pending extension data for this extension, then this 1914 // If we have pending extension data for this extension, then this
1909 // version is out of date. We'll sync back the version we got from 1915 // version is out of date. We'll sync back the version we got from
1910 // sync. 1916 // sync.
1911 !bundle.HasPendingExtensionId(extension.id())) { 1917 !bundle.HasPendingExtensionId(extension.id())) {
1912 sync_data_list->push_back( 1918 sync_data_list->push_back(
1913 ExtensionSyncData(extension, 1919 ExtensionSyncData(extension,
1914 IsExtensionEnabled(extension.id()), 1920 IsExtensionEnabled(extension.id()),
1915 IsIncognitoEnabled(extension.id()))); 1921 IsIncognitoEnabled(extension.id()),
1922 IsNotificationsInitialSetupDone(extension.id()),
1923 IsNotificationsDisabled(extension.id())));
1916 } 1924 }
1917 } 1925 }
1918 } 1926 }
1919 1927
1920 std::vector<ExtensionSyncData> ExtensionService::GetSyncDataList( 1928 std::vector<ExtensionSyncData> ExtensionService::GetSyncDataList(
1921 const SyncBundle& bundle) const { 1929 const SyncBundle& bundle) const {
1922 std::vector<ExtensionSyncData> extension_sync_list; 1930 std::vector<ExtensionSyncData> extension_sync_list;
1923 GetSyncDataListHelper(extensions_, bundle, &extension_sync_list); 1931 GetSyncDataListHelper(extensions_, bundle, &extension_sync_list);
1924 GetSyncDataListHelper(disabled_extensions_, bundle, &extension_sync_list); 1932 GetSyncDataListHelper(disabled_extensions_, bundle, &extension_sync_list);
1925 GetSyncDataListHelper(terminated_extensions_, bundle, &extension_sync_list); 1933 GetSyncDataListHelper(terminated_extensions_, bundle, &extension_sync_list);
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
2029 if (enabled_extension) { 2037 if (enabled_extension) {
2030 NotifyExtensionUnloaded( 2038 NotifyExtensionUnloaded(
2031 enabled_extension, extension_misc::UNLOAD_REASON_DISABLE); 2039 enabled_extension, extension_misc::UNLOAD_REASON_DISABLE);
2032 NotifyExtensionLoaded(enabled_extension); 2040 NotifyExtensionLoaded(enabled_extension);
2033 } 2041 }
2034 2042
2035 if (extension) 2043 if (extension)
2036 SyncExtensionChangeIfNeeded(*extension); 2044 SyncExtensionChangeIfNeeded(*extension);
2037 } 2045 }
2038 2046
2047 bool ExtensionService::IsNotificationsInitialSetupDone(
2048 const std::string& extension_id) const {
2049 return extension_prefs_->IsNotificationsInitialSetupDone(extension_id);
2050 }
2051
2052 void ExtensionService::SetNotificationsInitialSetupDone(
2053 const std::string& extension_id,
2054 bool value) {
2055 extension_prefs_->SetNotificationsInitialSetupDone(extension_id, value);
asargent_no_longer_on_chrome 2011/10/27 16:52:21 nit: probably not worth writing this into the pref
Munjal (Google) 2011/10/27 18:35:05 Done. I have one question though - is it possible
asargent_no_longer_on_chrome 2011/10/27 19:49:41 A race condition is unlikely to happen - the way t
Munjal (Google) 2011/10/27 20:01:50 Great, good to know.
2056 const Extension* extension = GetInstalledExtension(extension_id);
2057 if (extension)
2058 SyncExtensionChangeIfNeeded(*extension);
2059 }
2060
2061 bool ExtensionService::IsNotificationsDisabled(
2062 const std::string& extension_id) const {
2063 return extension_prefs_->IsNotificationsDisabled(extension_id);
2064 }
2065
2066 void ExtensionService::SetNotificationsDisabled(
2067 const std::string& extension_id,
2068 bool value) {
2069 extension_prefs_->SetNotificationsDisabled(extension_id, value);
2070 const Extension* extension = GetInstalledExtension(extension_id);
2071 if (extension)
asargent_no_longer_on_chrome 2011/10/27 16:52:21 same thing here about bailing out if the extension
Munjal (Google) 2011/10/27 18:35:05 Done.
2072 SyncExtensionChangeIfNeeded(*extension);
2073 }
2074
2039 bool ExtensionService::CanCrossIncognito(const Extension* extension) { 2075 bool ExtensionService::CanCrossIncognito(const Extension* extension) {
2040 // We allow the extension to see events and data from another profile iff it 2076 // We allow the extension to see events and data from another profile iff it
2041 // uses "spanning" behavior and it has incognito access. "split" mode 2077 // uses "spanning" behavior and it has incognito access. "split" mode
2042 // extensions only see events for a matching profile. 2078 // extensions only see events for a matching profile.
2043 CHECK(extension); 2079 CHECK(extension);
2044 return IsIncognitoEnabled(extension->id()) && 2080 return IsIncognitoEnabled(extension->id()) &&
2045 !extension->incognito_split_mode(); 2081 !extension->incognito_split_mode();
2046 } 2082 }
2047 2083
2048 bool ExtensionService::CanLoadInIncognito(const Extension* extension) const { 2084 bool ExtensionService::CanLoadInIncognito(const Extension* extension) const {
(...skipping 977 matching lines...) Expand 10 before | Expand all | Expand 10 after
3026 3062
3027 ExtensionService::NaClModuleInfoList::iterator 3063 ExtensionService::NaClModuleInfoList::iterator
3028 ExtensionService::FindNaClModule(const GURL& url) { 3064 ExtensionService::FindNaClModule(const GURL& url) {
3029 for (NaClModuleInfoList::iterator iter = nacl_module_list_.begin(); 3065 for (NaClModuleInfoList::iterator iter = nacl_module_list_.begin();
3030 iter != nacl_module_list_.end(); ++iter) { 3066 iter != nacl_module_list_.end(); ++iter) {
3031 if (iter->url == url) 3067 if (iter->url == url)
3032 return iter; 3068 return iter;
3033 } 3069 }
3034 return nacl_module_list_.end(); 3070 return nacl_module_list_.end();
3035 } 3071 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698