Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/app_mode/startup_app_launcher.h" | 5 #include "chrome/browser/chromeos/app_mode/startup_app_launcher.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
| 9 #include "base/json/json_file_value_serializer.h" | 9 #include "base/json/json_file_value_serializer.h" |
| 10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 44 #include "url/gurl.h" | 44 #include "url/gurl.h" |
| 45 | 45 |
| 46 using content::BrowserThread; | 46 using content::BrowserThread; |
| 47 using extensions::Extension; | 47 using extensions::Extension; |
| 48 using extensions::WebstoreStartupInstaller; | 48 using extensions::WebstoreStartupInstaller; |
| 49 | 49 |
| 50 namespace chromeos { | 50 namespace chromeos { |
| 51 | 51 |
| 52 namespace { | 52 namespace { |
| 53 | 53 |
| 54 const int kRerunDelay = 2; | |
|
xiyuan
2014/03/26 16:24:16
no longer needed.
zel
2014/03/26 17:30:58
Done.
| |
| 54 const char kOAuthRefreshToken[] = "refresh_token"; | 55 const char kOAuthRefreshToken[] = "refresh_token"; |
| 55 const char kOAuthClientId[] = "client_id"; | 56 const char kOAuthClientId[] = "client_id"; |
| 56 const char kOAuthClientSecret[] = "client_secret"; | 57 const char kOAuthClientSecret[] = "client_secret"; |
| 57 | 58 |
| 58 const base::FilePath::CharType kOAuthFileName[] = | 59 const base::FilePath::CharType kOAuthFileName[] = |
| 59 FILE_PATH_LITERAL("kiosk_auth"); | 60 FILE_PATH_LITERAL("kiosk_auth"); |
| 60 | 61 |
| 61 const int kMaxInstallAttempt = 5; | 62 const int kMaxInstallAttempt = 5; |
| 62 | 63 |
| 63 } // namespace | 64 } // namespace |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 141 UserManager::Get()->SetAppModeChromeClientOAuthInfo( | 142 UserManager::Get()->SetAppModeChromeClientOAuthInfo( |
| 142 auth_params_.client_id, | 143 auth_params_.client_id, |
| 143 auth_params_.client_secret); | 144 auth_params_.client_secret); |
| 144 } | 145 } |
| 145 | 146 |
| 146 // If we are restarting chrome (i.e. on crash), we need to initialize | 147 // If we are restarting chrome (i.e. on crash), we need to initialize |
| 147 // OAuth2TokenService as well. | 148 // OAuth2TokenService as well. |
| 148 InitializeTokenService(); | 149 InitializeTokenService(); |
| 149 } | 150 } |
| 150 | 151 |
| 152 void StartupAppLauncher::RestartLauncher() { | |
| 153 // If installer is still running in the background, delay the restart. | |
|
xiyuan
2014/03/26 16:24:16
nit: Update the comment to clarify that start up c
zel
2014/03/26 17:30:58
Done.
| |
| 154 if (installer_ != NULL) { | |
| 155 LOG(WARNING) << "Installer still running"; | |
| 156 return; | |
| 157 } | |
| 158 | |
| 159 MaybeInitializeNetwork(); | |
| 160 } | |
| 161 | |
| 151 void StartupAppLauncher::MaybeInitializeNetwork() { | 162 void StartupAppLauncher::MaybeInitializeNetwork() { |
| 152 network_ready_handled_ = false; | 163 network_ready_handled_ = false; |
| 153 | 164 |
| 154 const Extension* extension = extensions::ExtensionSystem::Get(profile_)-> | 165 const Extension* extension = extensions::ExtensionSystem::Get(profile_)-> |
| 155 extension_service()->GetInstalledExtension(app_id_); | 166 extension_service()->GetInstalledExtension(app_id_); |
| 156 const bool requires_network = !extension || | 167 const bool requires_network = !extension || |
| 157 !extensions::OfflineEnabledInfo::IsOfflineEnabled(extension); | 168 !extensions::OfflineEnabledInfo::IsOfflineEnabled(extension); |
| 158 | 169 |
| 159 if (requires_network) { | 170 if (requires_network) { |
| 160 delegate_->InitializeNetwork(); | 171 delegate_->InitializeNetwork(); |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 288 app_id_, | 299 app_id_, |
| 289 profile_, | 300 profile_, |
| 290 false, | 301 false, |
| 291 base::Bind(&StartupAppLauncher::InstallCallback, AsWeakPtr())); | 302 base::Bind(&StartupAppLauncher::InstallCallback, AsWeakPtr())); |
| 292 installer_->BeginInstall(); | 303 installer_->BeginInstall(); |
| 293 } | 304 } |
| 294 | 305 |
| 295 void StartupAppLauncher::InstallCallback(bool success, | 306 void StartupAppLauncher::InstallCallback(bool success, |
| 296 const std::string& error) { | 307 const std::string& error) { |
| 297 installer_ = NULL; | 308 installer_ = NULL; |
| 309 if (delegate_->IsShowingNetworkConfigScreen()) { | |
| 310 LOG(WARNING) << "Showing network config screen"; | |
| 311 return; | |
| 312 } | |
| 313 | |
| 298 if (success) { | 314 if (success) { |
| 299 // Finish initialization after the callback returns. | 315 // Finish initialization after the callback returns. |
| 300 // So that the app finishes its installation. | 316 // So that the app finishes its installation. |
| 301 BrowserThread::PostTask( | 317 BrowserThread::PostTask( |
| 302 BrowserThread::UI, | 318 BrowserThread::UI, |
| 303 FROM_HERE, | 319 FROM_HERE, |
| 304 base::Bind(&StartupAppLauncher::OnReadyToLaunch, | 320 base::Bind(&StartupAppLauncher::OnReadyToLaunch, |
| 305 AsWeakPtr())); | 321 AsWeakPtr())); |
| 306 return; | 322 return; |
| 307 } | 323 } |
| 308 | 324 |
| 309 LOG(ERROR) << "App install failed: " << error | 325 LOG(ERROR) << "App install failed: " << error |
| 310 << ", for attempt " << install_attempt_; | 326 << ", for attempt " << install_attempt_; |
| 311 | 327 |
| 312 ++install_attempt_; | 328 ++install_attempt_; |
| 313 if (install_attempt_ < kMaxInstallAttempt) { | 329 if (install_attempt_ < kMaxInstallAttempt) { |
| 314 BrowserThread::PostTask( | 330 BrowserThread::PostTask( |
| 315 BrowserThread::UI, | 331 BrowserThread::UI, |
| 316 FROM_HERE, | 332 FROM_HERE, |
| 317 base::Bind(&StartupAppLauncher::MaybeInitializeNetwork, | 333 base::Bind(&StartupAppLauncher::MaybeInitializeNetwork, |
| 318 AsWeakPtr())); | 334 AsWeakPtr())); |
| 319 return; | 335 return; |
| 320 } | 336 } |
| 321 | 337 |
| 322 OnLaunchFailure(KioskAppLaunchError::UNABLE_TO_INSTALL); | 338 if (!delegate_->IsShowingNetworkConfigScreen()) |
|
xiyuan
2014/03/26 16:24:16
This "if" seem unnecessary.
zel
2014/03/26 17:30:58
Done.
| |
| 339 OnLaunchFailure(KioskAppLaunchError::UNABLE_TO_INSTALL); | |
| 323 } | 340 } |
| 324 | 341 |
| 325 void StartupAppLauncher::OnReadyToLaunch() { | 342 void StartupAppLauncher::OnReadyToLaunch() { |
| 326 ready_to_launch_ = true; | 343 ready_to_launch_ = true; |
| 327 delegate_->OnReadyToLaunch(); | 344 delegate_->OnReadyToLaunch(); |
| 328 } | 345 } |
| 329 | 346 |
| 330 void StartupAppLauncher::UpdateAppData() { | 347 void StartupAppLauncher::UpdateAppData() { |
| 331 KioskAppManager::Get()->ClearAppData(app_id_); | 348 KioskAppManager::Get()->ClearAppData(app_id_); |
| 332 KioskAppManager::Get()->UpdateAppDataFromProfile(app_id_, profile_, NULL); | 349 KioskAppManager::Get()->UpdateAppDataFromProfile(app_id_, profile_, NULL); |
| 333 } | 350 } |
| 334 | 351 |
| 335 } // namespace chromeos | 352 } // namespace chromeos |
| OLD | NEW |