OLD | NEW |
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/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 1873 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1884 extension_sync_list.push_back(i->second); | 1884 extension_sync_list.push_back(i->second); |
1885 } | 1885 } |
1886 | 1886 |
1887 return extension_sync_list; | 1887 return extension_sync_list; |
1888 } | 1888 } |
1889 | 1889 |
1890 void ExtensionService::ProcessExtensionSyncData( | 1890 void ExtensionService::ProcessExtensionSyncData( |
1891 const ExtensionSyncData& extension_sync_data, | 1891 const ExtensionSyncData& extension_sync_data, |
1892 SyncBundle& bundle) { | 1892 SyncBundle& bundle) { |
1893 const std::string& id = extension_sync_data.id(); | 1893 const std::string& id = extension_sync_data.id(); |
| 1894 const Extension* extension = GetInstalledExtension(id); |
| 1895 |
| 1896 // TODO(bolms): we should really handle this better. The particularly bad |
| 1897 // case is where an app becomes an extension or vice versa, and we end up with |
| 1898 // a zombie extension that won't go away. |
| 1899 if (extension && !bundle.filter(*extension)) |
| 1900 return; |
1894 | 1901 |
1895 // Handle uninstalls first. | 1902 // Handle uninstalls first. |
1896 if (extension_sync_data.uninstalled()) { | 1903 if (extension_sync_data.uninstalled()) { |
1897 std::string error; | 1904 std::string error; |
1898 if (!UninstallExtensionHelper(this, id)) { | 1905 if (!UninstallExtensionHelper(this, id)) { |
1899 LOG(WARNING) << "Could not uninstall extension " << id | 1906 LOG(WARNING) << "Could not uninstall extension " << id |
1900 << " for sync"; | 1907 << " for sync"; |
1901 } | 1908 } |
1902 return; | 1909 return; |
1903 } | 1910 } |
1904 | 1911 |
1905 // Set user settings. | 1912 // Set user settings. |
1906 if (extension_sync_data.enabled()) { | 1913 if (extension_sync_data.enabled()) { |
1907 EnableExtension(id); | 1914 EnableExtension(id); |
1908 } else { | 1915 } else { |
1909 DisableExtension(id); | 1916 DisableExtension(id); |
1910 } | 1917 } |
1911 SetIsIncognitoEnabled(id, extension_sync_data.incognito_enabled()); | 1918 SetIsIncognitoEnabled(id, extension_sync_data.incognito_enabled()); |
1912 | 1919 |
1913 const Extension* extension = GetInstalledExtension(id); | |
1914 if (extension) { | 1920 if (extension) { |
1915 // If the extension is already installed, check if it's outdated. | 1921 // If the extension is already installed, check if it's outdated. |
1916 int result = extension->version()->CompareTo(extension_sync_data.version()); | 1922 int result = extension->version()->CompareTo(extension_sync_data.version()); |
1917 if (result < 0) { | 1923 if (result < 0) { |
1918 // Extension is outdated. | 1924 // Extension is outdated. |
1919 bundle.pending_sync_data[extension_sync_data.id()] = extension_sync_data; | 1925 bundle.pending_sync_data[extension_sync_data.id()] = extension_sync_data; |
1920 CheckForUpdatesSoon(); | 1926 CheckForUpdatesSoon(); |
1921 } | 1927 } |
1922 } else { | 1928 } else { |
1923 // TODO(akalin): Replace silent update with a list of enabled | 1929 // TODO(akalin): Replace silent update with a list of enabled |
(...skipping 927 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2851 | 2857 |
2852 ExtensionService::NaClModuleInfoList::iterator | 2858 ExtensionService::NaClModuleInfoList::iterator |
2853 ExtensionService::FindNaClModule(const GURL& url) { | 2859 ExtensionService::FindNaClModule(const GURL& url) { |
2854 for (NaClModuleInfoList::iterator iter = nacl_module_list_.begin(); | 2860 for (NaClModuleInfoList::iterator iter = nacl_module_list_.begin(); |
2855 iter != nacl_module_list_.end(); ++iter) { | 2861 iter != nacl_module_list_.end(); ++iter) { |
2856 if (iter->url == url) | 2862 if (iter->url == url) |
2857 return iter; | 2863 return iter; |
2858 } | 2864 } |
2859 return nacl_module_list_.end(); | 2865 return nacl_module_list_.end(); |
2860 } | 2866 } |
OLD | NEW |