Chromium Code Reviews| Index: chrome/browser/chromeos/login/kiosk_browsertest.cc |
| diff --git a/chrome/browser/chromeos/login/kiosk_browsertest.cc b/chrome/browser/chromeos/login/kiosk_browsertest.cc |
| index e67f2389cba034a6be887a644acb28c1ac0a5fbf..b19036fe4bcde13433a221c488e93018b1551263 100644 |
| --- a/chrome/browser/chromeos/login/kiosk_browsertest.cc |
| +++ b/chrome/browser/chromeos/login/kiosk_browsertest.cc |
| @@ -13,6 +13,7 @@ |
| #include "base/prefs/pref_service.h" |
| #include "base/strings/string_number_conversions.h" |
| #include "base/strings/string_util.h" |
| +#include "base/synchronization/lock.h" |
| #include "chrome/browser/browser_process.h" |
| #include "chrome/browser/chrome_notification_types.h" |
| #include "chrome/browser/chromeos/app_mode/fake_cws.h" |
| @@ -139,6 +140,12 @@ void OnNetworkWaitTimedOut(const base::Closure& runner_quit_task) { |
| runner_quit_task.Run(); |
| } |
| +// Helper function for LockFileThread. |
| +void LockAndUnlock(scoped_ptr<base::Lock> lock) { |
|
bartfab (slow)
2014/08/20 14:45:29
Nit: #include "base/memory/scoped_ptr.h"
Joao da Silva
2014/08/21 08:00:00
Done.
|
| + lock->Acquire(); |
| + lock->Release(); |
| +} |
| + |
| // Helper functions for CanConfigureNetwork mock. |
| class ScopedCanConfigureNetwork { |
| public: |
| @@ -505,6 +512,22 @@ class KioskTest : public OobeBaseTest { |
| ->GetAppLaunchController(); |
| } |
| + // Returns a lock that is holding a task in the FILE thread. Any tasks posted |
|
bartfab (slow)
2014/08/20 14:45:29
Nit: s/ in / on /
Joao da Silva
2014/08/21 08:00:00
Done.
|
| + // to the FILE thread after this call will be blocked until the returned |
| + // lock is released. |
| + // This can be used to prevent app installation from completing until some |
| + // other conditions are checked and triggered. For example, this can be used |
| + // to trigger the network screen during app launch without racing with the |
| + // app launching process itself. |
| + scoped_ptr<base::AutoLock> LockFileThread() { |
| + scoped_ptr<base::Lock> lock(new base::Lock); |
| + scoped_ptr<base::AutoLock> auto_lock(new base::AutoLock(*lock)); |
| + content::BrowserThread::PostTask( |
|
bartfab (slow)
2014/08/20 14:45:29
Nit: #include "content/public/browser/browser_thre
Joao da Silva
2014/08/21 08:00:00
Done.
|
| + content::BrowserThread::FILE, FROM_HERE, |
|
bartfab (slow)
2014/08/20 14:45:29
Nit: #include "base/location.h"
Joao da Silva
2014/08/21 08:00:00
Done.
|
| + base::Bind(&LockAndUnlock, base::Passed(&lock))); |
|
bartfab (slow)
2014/08/20 14:45:29
Nit 1: #include "base/bind.h"
Nit 1: #include "bas
Joao da Silva
2014/08/21 08:00:00
Done.
|
| + return auto_lock.Pass(); |
| + } |
| + |
| MockUserManager* mock_user_manager() { return mock_user_manager_.get(); } |
| void set_test_app_id(const std::string& test_app_id) { |
| @@ -559,11 +582,12 @@ IN_PROC_BROWSER_TEST_F(KioskTest, LaunchAppNetworkDown) { |
| RunAppLaunchNetworkDownTest(); |
| } |
| -// TODO(zelidrag): Figure out why this test is flaky on bbots. |
| -IN_PROC_BROWSER_TEST_F(KioskTest, |
| - DISABLED_LaunchAppWithNetworkConfigAccelerator) { |
| +IN_PROC_BROWSER_TEST_F(KioskTest, LaunchAppWithNetworkConfigAccelerator) { |
| ScopedCanConfigureNetwork can_configure_network(true, false); |
| + // Block app loading until the network screen is shown. |
| + scoped_ptr<base::AutoLock> lock = LockFileThread(); |
| + |
| // Start app launch and wait for network connectivity timeout. |
| StartAppLaunchFromLoginScreen(SimulateNetworkOnlineClosure()); |
| OobeScreenWaiter splash_waiter(OobeDisplay::SCREEN_APP_LAUNCH_SPLASH); |
| @@ -589,6 +613,9 @@ IN_PROC_BROWSER_TEST_F(KioskTest, |
| "$('continue-network-config-btn').dispatchEvent(e);" |
| "})();")); |
| + // Let app launching resume. |
| + lock.reset(); |
| + |
| WaitForAppLaunchSuccess(); |
| } |