| 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 // Download code which handles CRX files (extensions, themes, apps, ...). | 5 // Download code which handles CRX files (extensions, themes, apps, ...). |
| 6 | 6 |
| 7 #include "chrome/browser/download/download_crx_util.h" | 7 #include "chrome/browser/download/download_crx_util.h" |
| 8 | 8 |
| 9 #include "chrome/browser/chrome_notification_types.h" | 9 #include "chrome/browser/chrome_notification_types.h" |
| 10 #include "chrome/browser/extensions/crx_installer.h" | 10 #include "chrome/browser/extensions/crx_installer.h" |
| 11 #include "chrome/browser/extensions/extension_install_prompt.h" | 11 #include "chrome/browser/extensions/extension_install_prompt.h" |
| 12 #include "chrome/browser/extensions/extension_service.h" | |
| 13 #include "chrome/browser/extensions/webstore_installer.h" | 12 #include "chrome/browser/extensions/webstore_installer.h" |
| 14 #include "chrome/browser/profiles/profile.h" | 13 #include "chrome/browser/profiles/profile.h" |
| 15 #include "chrome/browser/ui/browser_finder.h" | 14 #include "chrome/browser/ui/browser_finder.h" |
| 16 #include "chrome/browser/ui/host_desktop.h" | 15 #include "chrome/browser/ui/host_desktop.h" |
| 17 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 16 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 18 #include "content/public/browser/download_item.h" | 17 #include "content/public/browser/download_item.h" |
| 19 #include "content/public/browser/notification_service.h" | 18 #include "content/public/browser/notification_service.h" |
| 19 #include "extensions/browser/extension_prefs.h" |
| 20 #include "extensions/browser/extension_system.h" | 20 #include "extensions/browser/extension_system.h" |
| 21 #include "extensions/common/user_script.h" | 21 #include "extensions/common/user_script.h" |
| 22 | 22 |
| 23 using content::BrowserThread; | 23 using content::BrowserThread; |
| 24 using content::DownloadItem; | 24 using content::DownloadItem; |
| 25 using extensions::WebstoreInstaller; | 25 using extensions::WebstoreInstaller; |
| 26 | 26 |
| 27 namespace download_crx_util { | 27 namespace download_crx_util { |
| 28 | 28 |
| 29 namespace { | 29 namespace { |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 if (download_item.GetMimeType() == extensions::Extension::kMimeType || | 121 if (download_item.GetMimeType() == extensions::Extension::kMimeType || |
| 122 extensions::UserScript::IsURLUserScript(download_item.GetURL(), | 122 extensions::UserScript::IsURLUserScript(download_item.GetURL(), |
| 123 download_item.GetMimeType())) { | 123 download_item.GetMimeType())) { |
| 124 return true; | 124 return true; |
| 125 } else { | 125 } else { |
| 126 return false; | 126 return false; |
| 127 } | 127 } |
| 128 } | 128 } |
| 129 | 129 |
| 130 bool OffStoreInstallAllowedByPrefs(Profile* profile, const DownloadItem& item) { | 130 bool OffStoreInstallAllowedByPrefs(Profile* profile, const DownloadItem& item) { |
| 131 ExtensionService* service = extensions::ExtensionSystem::Get( | 131 extensions::ExtensionPrefs* prefs = extensions::ExtensionPrefs::Get(profile); |
| 132 profile)->extension_service(); | |
| 133 if (!service) | |
| 134 return false; | |
| 135 | |
| 136 extensions::ExtensionPrefs* prefs = service->extension_prefs(); | |
| 137 CHECK(prefs); | 132 CHECK(prefs); |
| 138 | 133 |
| 139 extensions::URLPatternSet url_patterns = prefs->GetAllowedInstallSites(); | 134 extensions::URLPatternSet url_patterns = prefs->GetAllowedInstallSites(); |
| 140 | 135 |
| 141 if (!url_patterns.MatchesURL(item.GetURL())) | 136 if (!url_patterns.MatchesURL(item.GetURL())) |
| 142 return false; | 137 return false; |
| 143 | 138 |
| 144 // The referrer URL must also be whitelisted, unless the URL has the file | 139 // The referrer URL must also be whitelisted, unless the URL has the file |
| 145 // scheme (there's no referrer for those URLs). | 140 // scheme (there's no referrer for those URLs). |
| 146 // TODO(aa): RefererURL is cleared in some cases, for example when going | 141 // TODO(aa): RefererURL is cleared in some cases, for example when going |
| 147 // between secure and non-secure URLs. It would be better if DownloadItem | 142 // between secure and non-secure URLs. It would be better if DownloadItem |
| 148 // tracked the initiating page explicitly. | 143 // tracked the initiating page explicitly. |
| 149 return url_patterns.MatchesURL(item.GetReferrerUrl()) || | 144 return url_patterns.MatchesURL(item.GetReferrerUrl()) || |
| 150 item.GetURL().SchemeIsFile(); | 145 item.GetURL().SchemeIsFile(); |
| 151 } | 146 } |
| 152 | 147 |
| 153 } // namespace download_crx_util | 148 } // namespace download_crx_util |
| OLD | NEW |