OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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_install_ui.h" | 5 #include "chrome/browser/extensions/extension_install_ui.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "app/l10n_util.h" | 9 #include "app/l10n_util.h" |
10 #include "app/resource_bundle.h" | 10 #include "app/resource_bundle.h" |
11 #include "base/file_util.h" | 11 #include "base/file_util.h" |
12 #include "base/rand_util.h" | 12 #include "base/rand_util.h" |
13 #include "base/utf_string_conversions.h" | 13 #include "base/utf_string_conversions.h" |
14 #include "chrome/browser/browser_list.h" | 14 #include "chrome/browser/browser_list.h" |
15 #include "chrome/browser/browser_window.h" | 15 #include "chrome/browser/browser_window.h" |
16 #include "chrome/browser/extensions/theme_installed_infobar_delegate.h" | 16 #include "chrome/browser/extensions/theme_installed_infobar_delegate.h" |
17 #include "chrome/browser/profile.h" | 17 #include "chrome/browser/profile.h" |
18 #include "chrome/browser/tab_contents/tab_contents.h" | 18 #include "chrome/browser/tab_contents/tab_contents.h" |
19 #if defined(TOOLKIT_VIEWS) // TODO(port) | 19 #if defined(TOOLKIT_VIEWS) // TODO(port) |
20 #include "chrome/browser/views/extensions/extension_installed_bubble.h" | 20 #include "chrome/browser/views/extensions/extension_installed_bubble.h" |
21 #endif // TOOLKIT_VIEWS | 21 #endif // TOOLKIT_VIEWS |
22 #include "chrome/common/extensions/extension.h" | 22 #include "chrome/common/extensions/extension.h" |
23 #include "chrome/common/notification_service.h" | 23 #include "chrome/common/notification_service.h" |
| 24 #include "chrome/common/url_constants.h" |
24 #include "grit/browser_resources.h" | 25 #include "grit/browser_resources.h" |
25 #include "grit/chromium_strings.h" | 26 #include "grit/chromium_strings.h" |
26 #include "grit/generated_resources.h" | 27 #include "grit/generated_resources.h" |
27 #include "grit/theme_resources.h" | 28 #include "grit/theme_resources.h" |
28 | 29 |
29 #if defined(TOOLKIT_GTK) | 30 #if defined(TOOLKIT_GTK) |
30 #include "chrome/browser/extensions/gtk_theme_installed_infobar_delegate.h" | 31 #include "chrome/browser/extensions/gtk_theme_installed_infobar_delegate.h" |
31 #include "chrome/browser/gtk/gtk_theme_provider.h" | 32 #include "chrome/browser/gtk/gtk_theme_provider.h" |
32 #endif | 33 #endif |
33 | 34 |
34 namespace { | 35 namespace { |
35 | 36 |
36 static std::wstring GetInstallWarning(Extension* extension) { | 37 static std::wstring GetInstallWarning(Extension* extension) { |
37 // If the extension has a plugin, it's easy: the plugin has the most severe | 38 // If the extension has a plugin, it's easy: the plugin has the most severe |
38 // warning. | 39 // warning. |
39 if (!extension->plugins().empty()) | 40 if (!extension->plugins().empty()) |
40 return l10n_util::GetString(IDS_EXTENSION_PROMPT_WARNING_NEW_FULL_ACCESS); | 41 return l10n_util::GetString(IDS_EXTENSION_PROMPT_WARNING_NEW_FULL_ACCESS); |
41 | 42 |
| 43 // We also show the severe warning if the extension has access to any file:// |
| 44 // URLs. They aren't *quite* as dangerous as full access to the system via |
| 45 // NPAPI, but pretty dang close. Content scripts are currently the only way |
| 46 // that extension can get access to file:// URLs. |
| 47 for (UserScriptList::const_iterator script = |
| 48 extension->content_scripts().begin(); |
| 49 script != extension->content_scripts().end(); |
| 50 ++script) { |
| 51 for (UserScript::PatternList::const_iterator pattern = |
| 52 script->url_patterns().begin(); |
| 53 pattern != script->url_patterns().end(); |
| 54 ++pattern) { |
| 55 if (pattern->scheme() == chrome::kFileScheme) { |
| 56 return l10n_util::GetString( |
| 57 IDS_EXTENSION_PROMPT_WARNING_NEW_FULL_ACCESS); |
| 58 } |
| 59 } |
| 60 } |
| 61 |
42 // Otherwise, we go in descending order of severity: all hosts, several hosts, | 62 // Otherwise, we go in descending order of severity: all hosts, several hosts, |
43 // a single host, no hosts. For each of these, we also have a variation of the | 63 // a single host, no hosts. For each of these, we also have a variation of the |
44 // message for when api permissions are also requested. | 64 // message for when api permissions are also requested. |
45 if (extension->HasAccessToAllHosts()) { | 65 if (extension->HasAccessToAllHosts()) { |
46 if (extension->api_permissions().empty()) | 66 if (extension->api_permissions().empty()) |
47 return l10n_util::GetString(IDS_EXTENSION_PROMPT_WARNING_NEW_ALL_HOSTS); | 67 return l10n_util::GetString(IDS_EXTENSION_PROMPT_WARNING_NEW_ALL_HOSTS); |
48 else | 68 else |
49 return l10n_util::GetString( | 69 return l10n_util::GetString( |
50 IDS_EXTENSION_PROMPT_WARNING_NEW_ALL_HOSTS_AND_BROWSER); | 70 IDS_EXTENSION_PROMPT_WARNING_NEW_ALL_HOSTS_AND_BROWSER); |
51 } | 71 } |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 InfoBarDelegate* ExtensionInstallUI::GetNewInfoBarDelegate( | 243 InfoBarDelegate* ExtensionInstallUI::GetNewInfoBarDelegate( |
224 Extension* new_theme, TabContents* tab_contents) { | 244 Extension* new_theme, TabContents* tab_contents) { |
225 #if defined(TOOLKIT_GTK) | 245 #if defined(TOOLKIT_GTK) |
226 return new GtkThemeInstalledInfoBarDelegate(tab_contents, new_theme, | 246 return new GtkThemeInstalledInfoBarDelegate(tab_contents, new_theme, |
227 previous_theme_id_, previous_use_gtk_theme_); | 247 previous_theme_id_, previous_use_gtk_theme_); |
228 #else | 248 #else |
229 return new ThemeInstalledInfoBarDelegate(tab_contents, new_theme, | 249 return new ThemeInstalledInfoBarDelegate(tab_contents, new_theme, |
230 previous_theme_id_); | 250 previous_theme_id_); |
231 #endif | 251 #endif |
232 } | 252 } |
OLD | NEW |