Chromium Code Reviews| 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 #include "chrome/browser/chromeos/offline/offline_load_page.h" | 5 #include "chrome/browser/chromeos/offline/offline_load_page.h" |
| 6 | 6 |
| 7 #include "apps/launcher.h" | 7 #include "apps/launcher.h" |
| 8 #include "ash/shell.h" | 8 #include "ash/shell.h" |
| 9 #include "ash/shell_delegate.h" | 9 #include "ash/shell_delegate.h" |
| 10 #include "ash/system/tray/system_tray_delegate.h" | 10 #include "ash/system/tray/system_tray_delegate.h" |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 22 #include "chrome/browser/renderer_preferences_util.h" | 22 #include "chrome/browser/renderer_preferences_util.h" |
| 23 #include "chrome/browser/tab_contents/tab_util.h" | 23 #include "chrome/browser/tab_contents/tab_util.h" |
| 24 #include "chrome/common/extensions/extension_constants.h" | 24 #include "chrome/common/extensions/extension_constants.h" |
| 25 #include "chrome/common/localized_error.h" | 25 #include "chrome/common/localized_error.h" |
| 26 #include "chrome/common/pref_names.h" | 26 #include "chrome/common/pref_names.h" |
| 27 #include "chrome/common/url_constants.h" | 27 #include "chrome/common/url_constants.h" |
| 28 #include "content/public/browser/browser_thread.h" | 28 #include "content/public/browser/browser_thread.h" |
| 29 #include "content/public/browser/interstitial_page.h" | 29 #include "content/public/browser/interstitial_page.h" |
| 30 #include "content/public/browser/notification_types.h" | 30 #include "content/public/browser/notification_types.h" |
| 31 #include "content/public/browser/web_contents.h" | 31 #include "content/public/browser/web_contents.h" |
| 32 #include "extensions/browser/extension_registry.h" | |
| 32 #include "extensions/browser/extension_system.h" | 33 #include "extensions/browser/extension_system.h" |
| 33 #include "extensions/common/extension.h" | 34 #include "extensions/common/extension.h" |
| 34 #include "extensions/common/extension_icon_set.h" | 35 #include "extensions/common/extension_icon_set.h" |
| 35 #include "extensions/common/manifest_handlers/icons_handler.h" | 36 #include "extensions/common/manifest_handlers/icons_handler.h" |
| 36 #include "grit/browser_resources.h" | 37 #include "grit/browser_resources.h" |
| 37 #include "grit/chromium_strings.h" | 38 #include "grit/chromium_strings.h" |
| 38 #include "grit/generated_resources.h" | 39 #include "grit/generated_resources.h" |
| 39 #include "grit/google_chrome_strings.h" | 40 #include "grit/google_chrome_strings.h" |
| 40 #include "grit/theme_resources.h" | 41 #include "grit/theme_resources.h" |
| 41 #include "net/base/escape.h" | 42 #include "net/base/escape.h" |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 79 // The offline page for app has icons and slightly different message. | 80 // The offline page for app has icons and slightly different message. |
| 80 Profile* profile = Profile::FromBrowserContext( | 81 Profile* profile = Profile::FromBrowserContext( |
| 81 web_contents_->GetBrowserContext()); | 82 web_contents_->GetBrowserContext()); |
| 82 DCHECK(profile); | 83 DCHECK(profile); |
| 83 const extensions::Extension* extension = NULL; | 84 const extensions::Extension* extension = NULL; |
| 84 ExtensionService* extensions_service = | 85 ExtensionService* extensions_service = |
| 85 extensions::ExtensionSystem::Get(profile)->extension_service(); | 86 extensions::ExtensionSystem::Get(profile)->extension_service(); |
| 86 | 87 |
| 87 // Extension service does not exist in test. | 88 // Extension service does not exist in test. |
| 88 if (extensions_service) | 89 if (extensions_service) |
| 89 extension = extensions_service->extensions()->GetHostedAppByURL(url_); | 90 extension = extensions_service->extensions()->GetHostedAppByURL(url_); |
|
Devlin
2014/06/25 19:38:48
If you wanted bonus points, you could make this Ex
Lei Zhang
2014/06/25 19:58:31
Done.
| |
| 90 | 91 |
| 91 if (extension && !extension->from_bookmark()) { | 92 if (extension && !extension->from_bookmark()) { |
| 92 LocalizedError::GetAppErrorStrings(url_, extension, &error_strings); | 93 LocalizedError::GetAppErrorStrings(url_, extension, &error_strings); |
| 93 resource_id = IDR_OFFLINE_APP_LOAD_HTML; | 94 resource_id = IDR_OFFLINE_APP_LOAD_HTML; |
| 94 } else { | 95 } else { |
| 95 const std::string locale = g_browser_process->GetApplicationLocale(); | 96 const std::string locale = g_browser_process->GetApplicationLocale(); |
| 96 const std::string accept_languages = | 97 const std::string accept_languages = |
| 97 profile->GetPrefs()->GetString(prefs::kAcceptLanguages); | 98 profile->GetPrefs()->GetString(prefs::kAcceptLanguages); |
| 98 LocalizedError::GetStrings(net::ERR_INTERNET_DISCONNECTED, | 99 LocalizedError::GetStrings(net::ERR_INTERNET_DISCONNECTED, |
| 99 net::kErrorDomain, url_, false, false, locale, | 100 net::kErrorDomain, url_, false, false, locale, |
| 100 accept_languages, | 101 accept_languages, |
| 101 scoped_ptr<LocalizedError::ErrorPageParams>(), | 102 scoped_ptr<LocalizedError::ErrorPageParams>(), |
| 102 &error_strings); | 103 &error_strings); |
| 103 resource_id = IDR_OFFLINE_NET_LOAD_HTML; | 104 resource_id = IDR_OFFLINE_NET_LOAD_HTML; |
| 104 } | 105 } |
| 105 | 106 |
| 106 const base::StringPiece template_html( | 107 const base::StringPiece template_html( |
| 107 ResourceBundle::GetSharedInstance().GetRawDataResource( | 108 ResourceBundle::GetSharedInstance().GetRawDataResource( |
| 108 resource_id)); | 109 resource_id)); |
| 109 // "t" is the id of the templates root node. | 110 // "t" is the id of the templates root node. |
| 110 return webui::GetTemplatesHtml(template_html, &error_strings, "t"); | 111 return webui::GetTemplatesHtml(template_html, &error_strings, "t"); |
| 111 } | 112 } |
| 112 | 113 |
| 113 void OfflineLoadPage::OverrideRendererPrefs( | 114 void OfflineLoadPage::OverrideRendererPrefs( |
| 114 content::RendererPreferences* prefs) { | 115 content::RendererPreferences* prefs) { |
| 115 Profile* profile = Profile::FromBrowserContext( | 116 Profile* profile = Profile::FromBrowserContext( |
| 116 web_contents_->GetBrowserContext()); | 117 web_contents_->GetBrowserContext()); |
| 117 renderer_preferences_util::UpdateFromSystemSettings(prefs, profile); | 118 renderer_preferences_util::UpdateFromSystemSettings(prefs, profile); |
| 118 } | 119 } |
| 119 | 120 |
| 120 void OfflineLoadPage::OnProceed() { | 121 void OfflineLoadPage::OnProceed() { |
| 121 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 122 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 122 proceeded_ = true; | 123 proceeded_ = true; |
| 123 NotifyBlockingPageComplete(true); | 124 NotifyBlockingPageComplete(true); |
| 124 } | 125 } |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 136 // The Jasonified response has quotes, remove them. | 137 // The Jasonified response has quotes, remove them. |
| 137 if (command.length() > 1 && command[0] == '"') { | 138 if (command.length() > 1 && command[0] == '"') { |
| 138 command = command.substr(1, command.length() - 2); | 139 command = command.substr(1, command.length() - 2); |
| 139 } | 140 } |
| 140 // TODO(oshima): record action for metrics. | 141 // TODO(oshima): record action for metrics. |
| 141 if (command == "open_network_settings") { | 142 if (command == "open_network_settings") { |
| 142 ash::Shell::GetInstance()->system_tray_delegate()->ShowNetworkSettings(""); | 143 ash::Shell::GetInstance()->system_tray_delegate()->ShowNetworkSettings(""); |
| 143 } else if (command == "open_connectivity_diagnostics") { | 144 } else if (command == "open_connectivity_diagnostics") { |
| 144 Profile* profile = Profile::FromBrowserContext( | 145 Profile* profile = Profile::FromBrowserContext( |
| 145 web_contents_->GetBrowserContext()); | 146 web_contents_->GetBrowserContext()); |
| 146 const extensions::Extension* extension = profile->GetExtensionService()-> | 147 const extensions::Extension* extension = |
| 147 GetInstalledExtension("kodldpbjkkmmnilagfdheibampofhaom"); | 148 extensions::ExtensionRegistry::Get(profile)->GetExtensionById( |
| 149 "kodldpbjkkmmnilagfdheibampofhaom", | |
| 150 extensions::ExtensionRegistry::EVERYTHING); | |
| 148 apps::LaunchPlatformAppWithUrl(profile, extension, "", | 151 apps::LaunchPlatformAppWithUrl(profile, extension, "", |
| 149 GURL::EmptyGURL(), GURL::EmptyGURL()); | 152 GURL::EmptyGURL(), GURL::EmptyGURL()); |
| 150 | 153 |
| 151 } else { | 154 } else { |
| 152 LOG(WARNING) << "Unknown command:" << cmd; | 155 LOG(WARNING) << "Unknown command:" << cmd; |
| 153 } | 156 } |
| 154 } | 157 } |
| 155 | 158 |
| 156 void OfflineLoadPage::NotifyBlockingPageComplete(bool proceed) { | 159 void OfflineLoadPage::NotifyBlockingPageComplete(bool proceed) { |
| 157 BrowserThread::PostTask( | 160 BrowserThread::PostTask( |
| 158 BrowserThread::IO, FROM_HERE, base::Bind(callback_, proceed)); | 161 BrowserThread::IO, FROM_HERE, base::Bind(callback_, proceed)); |
| 159 } | 162 } |
| 160 | 163 |
| 161 void OfflineLoadPage::OnConnectionTypeChanged( | 164 void OfflineLoadPage::OnConnectionTypeChanged( |
| 162 net::NetworkChangeNotifier::ConnectionType type) { | 165 net::NetworkChangeNotifier::ConnectionType type) { |
| 163 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 166 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 164 const bool online = type != net::NetworkChangeNotifier::CONNECTION_NONE; | 167 const bool online = type != net::NetworkChangeNotifier::CONNECTION_NONE; |
| 165 DVLOG(1) << "ConnectionTypeObserver notification received: state=" | 168 DVLOG(1) << "ConnectionTypeObserver notification received: state=" |
| 166 << (online ? "online" : "offline"); | 169 << (online ? "online" : "offline"); |
| 167 if (online) { | 170 if (online) { |
| 168 net::NetworkChangeNotifier::RemoveConnectionTypeObserver(this); | 171 net::NetworkChangeNotifier::RemoveConnectionTypeObserver(this); |
| 169 interstitial_page_->Proceed(); | 172 interstitial_page_->Proceed(); |
| 170 } | 173 } |
| 171 } | 174 } |
| 172 | 175 |
| 173 } // namespace chromeos | 176 } // namespace chromeos |
| OLD | NEW |