| 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/extensions/device_local_account_external_polic
     y_loader.h" |    5 #include "chrome/browser/chromeos/extensions/device_local_account_external_polic
     y_loader.h" | 
|    6  |    6  | 
|    7 #include <string> |    7 #include <string> | 
|    8  |    8  | 
|    9 #include "base/callback.h" |    9 #include "base/callback.h" | 
|   10 #include "base/files/file_util.h" |   10 #include "base/files/file_util.h" | 
|   11 #include "base/files/scoped_temp_dir.h" |   11 #include "base/files/scoped_temp_dir.h" | 
|   12 #include "base/message_loop/message_loop.h" |   12 #include "base/message_loop/message_loop.h" | 
|   13 #include "base/message_loop/message_loop_proxy.h" |  | 
|   14 #include "base/path_service.h" |   13 #include "base/path_service.h" | 
|   15 #include "base/run_loop.h" |   14 #include "base/run_loop.h" | 
|   16 #include "base/strings/stringprintf.h" |   15 #include "base/strings/stringprintf.h" | 
 |   16 #include "base/thread_task_runner_handle.h" | 
|   17 #include "base/values.h" |   17 #include "base/values.h" | 
|   18 #include "base/version.h" |   18 #include "base/version.h" | 
|   19 #include "chrome/browser/extensions/external_provider_impl.h" |   19 #include "chrome/browser/extensions/external_provider_impl.h" | 
|   20 #include "chrome/common/chrome_paths.h" |   20 #include "chrome/common/chrome_paths.h" | 
|   21 #include "chrome/test/base/testing_browser_process.h" |   21 #include "chrome/test/base/testing_browser_process.h" | 
|   22 #include "components/policy/core/common/cloud/mock_cloud_policy_store.h" |   22 #include "components/policy/core/common/cloud/mock_cloud_policy_store.h" | 
|   23 #include "components/policy/core/common/policy_map.h" |   23 #include "components/policy/core/common/policy_map.h" | 
|   24 #include "components/policy/core/common/policy_types.h" |   24 #include "components/policy/core/common/policy_types.h" | 
|   25 #include "content/public/browser/notification_service.h" |   25 #include "content/public/browser/notification_service.h" | 
|   26 #include "content/public/browser/notification_source.h" |   26 #include "content/public/browser/notification_source.h" | 
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  135  |  135  | 
|  136 DeviceLocalAccountExternalPolicyLoaderTest:: |  136 DeviceLocalAccountExternalPolicyLoaderTest:: | 
|  137     ~DeviceLocalAccountExternalPolicyLoaderTest() { |  137     ~DeviceLocalAccountExternalPolicyLoaderTest() { | 
|  138 } |  138 } | 
|  139  |  139  | 
|  140 void DeviceLocalAccountExternalPolicyLoaderTest::SetUp() { |  140 void DeviceLocalAccountExternalPolicyLoaderTest::SetUp() { | 
|  141   ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |  141   ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | 
|  142   cache_dir_ = temp_dir_.path().Append(kCacheDir); |  142   cache_dir_ = temp_dir_.path().Append(kCacheDir); | 
|  143   ASSERT_TRUE(base::CreateDirectoryAndGetError(cache_dir_, NULL)); |  143   ASSERT_TRUE(base::CreateDirectoryAndGetError(cache_dir_, NULL)); | 
|  144   request_context_getter_ = |  144   request_context_getter_ = | 
|  145       new net::TestURLRequestContextGetter(base::MessageLoopProxy::current()); |  145       new net::TestURLRequestContextGetter(base::ThreadTaskRunnerHandle::Get()); | 
|  146   TestingBrowserProcess::GetGlobal()->SetSystemRequestContext( |  146   TestingBrowserProcess::GetGlobal()->SetSystemRequestContext( | 
|  147       request_context_getter_.get()); |  147       request_context_getter_.get()); | 
|  148   ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_dir_)); |  148   ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_dir_)); | 
|  149  |  149  | 
|  150   loader_ = new DeviceLocalAccountExternalPolicyLoader(&store_, cache_dir_); |  150   loader_ = new DeviceLocalAccountExternalPolicyLoader(&store_, cache_dir_); | 
|  151   provider_.reset(new extensions::ExternalProviderImpl( |  151   provider_.reset(new extensions::ExternalProviderImpl( | 
|  152       &visitor_, |  152       &visitor_, | 
|  153       loader_, |  153       loader_, | 
|  154       NULL, |  154       NULL, | 
|  155       extensions::Manifest::EXTERNAL_POLICY, |  155       extensions::Manifest::EXTERNAL_POLICY, | 
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  204 } |  204 } | 
|  205  |  205  | 
|  206 // Verifies that the cache can be started and stopped correctly. |  206 // Verifies that the cache can be started and stopped correctly. | 
|  207 TEST_F(DeviceLocalAccountExternalPolicyLoaderTest, ForceInstallListEmpty) { |  207 TEST_F(DeviceLocalAccountExternalPolicyLoaderTest, ForceInstallListEmpty) { | 
|  208   // Set an empty force-install list policy. |  208   // Set an empty force-install list policy. | 
|  209   store_.NotifyStoreLoaded(); |  209   store_.NotifyStoreLoaded(); | 
|  210  |  210  | 
|  211   // Start the cache. Verify that the loader announces an empty extension list. |  211   // Start the cache. Verify that the loader announces an empty extension list. | 
|  212   EXPECT_CALL(visitor_, OnExternalProviderReady(provider_.get())) |  212   EXPECT_CALL(visitor_, OnExternalProviderReady(provider_.get())) | 
|  213       .Times(1); |  213       .Times(1); | 
|  214   loader_->StartCache(base::MessageLoopProxy::current()); |  214   loader_->StartCache(base::ThreadTaskRunnerHandle::Get()); | 
|  215   base::RunLoop().RunUntilIdle(); |  215   base::RunLoop().RunUntilIdle(); | 
|  216   VerifyAndResetVisitorCallExpectations(); |  216   VerifyAndResetVisitorCallExpectations(); | 
|  217  |  217  | 
|  218   // Stop the cache. Verify that the loader announces an empty extension list. |  218   // Stop the cache. Verify that the loader announces an empty extension list. | 
|  219   EXPECT_CALL(visitor_, OnExternalProviderReady(provider_.get())) |  219   EXPECT_CALL(visitor_, OnExternalProviderReady(provider_.get())) | 
|  220       .Times(1); |  220       .Times(1); | 
|  221   base::RunLoop run_loop; |  221   base::RunLoop run_loop; | 
|  222   loader_->StopCache(run_loop.QuitClosure()); |  222   loader_->StopCache(run_loop.QuitClosure()); | 
|  223   VerifyAndResetVisitorCallExpectations(); |  223   VerifyAndResetVisitorCallExpectations(); | 
|  224  |  224  | 
|  225   // Spin the loop until the cache shutdown callback is invoked. Verify that at |  225   // Spin the loop until the cache shutdown callback is invoked. Verify that at | 
|  226   // that point, no further file I/O tasks are pending. |  226   // that point, no further file I/O tasks are pending. | 
|  227   run_loop.Run(); |  227   run_loop.Run(); | 
|  228   EXPECT_TRUE(base::MessageLoop::current()->IsIdleForTesting()); |  228   EXPECT_TRUE(base::MessageLoop::current()->IsIdleForTesting()); | 
|  229 } |  229 } | 
|  230  |  230  | 
|  231 // Verifies that when a force-install list policy referencing an extension is |  231 // Verifies that when a force-install list policy referencing an extension is | 
|  232 // set and the cache is started, the loader downloads, caches and serves the |  232 // set and the cache is started, the loader downloads, caches and serves the | 
|  233 // extension. |  233 // extension. | 
|  234 TEST_F(DeviceLocalAccountExternalPolicyLoaderTest, ForceInstallListSet) { |  234 TEST_F(DeviceLocalAccountExternalPolicyLoaderTest, ForceInstallListSet) { | 
|  235   // Set a force-install list policy that contains an invalid entry (which |  235   // Set a force-install list policy that contains an invalid entry (which | 
|  236   // should be ignored) and a valid reference to an extension. |  236   // should be ignored) and a valid reference to an extension. | 
|  237   SetForceInstallListPolicy(); |  237   SetForceInstallListPolicy(); | 
|  238  |  238  | 
|  239   // Start the cache. |  239   // Start the cache. | 
|  240   loader_->StartCache(base::MessageLoopProxy::current()); |  240   loader_->StartCache(base::ThreadTaskRunnerHandle::Get()); | 
|  241  |  241  | 
|  242   // Spin the loop, allowing the loader to process the force-install list. |  242   // Spin the loop, allowing the loader to process the force-install list. | 
|  243   // Verify that the loader announces an empty extension list. |  243   // Verify that the loader announces an empty extension list. | 
|  244   net::TestURLFetcherFactory factory; |  244   net::TestURLFetcherFactory factory; | 
|  245   EXPECT_CALL(visitor_, OnExternalProviderReady(provider_.get())) |  245   EXPECT_CALL(visitor_, OnExternalProviderReady(provider_.get())) | 
|  246       .Times(1); |  246       .Times(1); | 
|  247   base::MessageLoop::current()->RunUntilIdle(); |  247   base::MessageLoop::current()->RunUntilIdle(); | 
|  248  |  248  | 
|  249   // Verify that a downloader has started and is attempting to download an |  249   // Verify that a downloader has started and is attempting to download an | 
|  250   // update manifest. |  250   // update manifest. | 
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  312   loader_->StopCache(shutdown_run_loop.QuitClosure()); |  312   loader_->StopCache(shutdown_run_loop.QuitClosure()); | 
|  313   VerifyAndResetVisitorCallExpectations(); |  313   VerifyAndResetVisitorCallExpectations(); | 
|  314  |  314  | 
|  315   // Spin the loop until the cache shutdown callback is invoked. Verify that at |  315   // Spin the loop until the cache shutdown callback is invoked. Verify that at | 
|  316   // that point, no further file I/O tasks are pending. |  316   // that point, no further file I/O tasks are pending. | 
|  317   shutdown_run_loop.Run(); |  317   shutdown_run_loop.Run(); | 
|  318   EXPECT_TRUE(base::MessageLoop::current()->IsIdleForTesting()); |  318   EXPECT_TRUE(base::MessageLoop::current()->IsIdleForTesting()); | 
|  319 } |  319 } | 
|  320  |  320  | 
|  321 }  // namespace chromeos |  321 }  // namespace chromeos | 
| OLD | NEW |