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 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_UNITTEST_H_ 6#define CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_UNITTEST_H_ 7 8#include "base/at_exit.h" 9#include "base/files/file_path.h" 10#include "base/files/scoped_temp_dir.h" 11#include "base/memory/ref_counted.h" 12#include "base/memory/scoped_ptr.h" 13#include "base/message_loop/message_loop.h" 14#include "chrome/browser/extensions/extension_service.h" 15#include "chrome/common/extensions/feature_switch.h" 16#include "content/public/test/test_browser_thread_bundle.h" 17#include "testing/gtest/include/gtest/gtest.h" 18 19#if defined(OS_CHROMEOS) 20#include "chrome/browser/chromeos/login/user_manager.h" 21#include "chrome/browser/chromeos/settings/cros_settings.h" 22#include "chrome/browser/chromeos/settings/device_settings_service.h" 23#endif 24 25class TestingProfile; 26 27namespace extensions { 28class ManagementPolicy; 29} 30 31class ExtensionServiceTestBase : public testing::Test { 32 public: 33 struct ExtensionServiceInitParams { 34 base::FilePath profile_path; 35 base::FilePath pref_file; 36 base::FilePath extensions_install_dir; 37 bool autoupdate_enabled; 38 bool is_first_run; 39 40 ExtensionServiceInitParams(); 41 }; 42 43 ExtensionServiceTestBase(); 44 virtual ~ExtensionServiceTestBase(); 45 46 void InitializeExtensionService(const ExtensionServiceInitParams& params); 47 48 void InitializeInstalledExtensionService( 49 const base::FilePath& prefs_file, 50 const base::FilePath& source_install_dir); 51 52 void InitializeEmptyExtensionService(); 53 54 void InitializeExtensionProcessManager(); 55 56 void InitializeExtensionServiceWithUpdater(); 57 58 static void SetUpTestCase(); 59 60 virtual void SetUp() OVERRIDE; 61 virtual void TearDown() OVERRIDE; 62 63 void set_extensions_enabled(bool enabled) { 64 service_->set_extensions_enabled(enabled); 65 } 66 67 protected: 68 void InitializeExtensionServiceHelper(bool autoupdate_enabled, 69 bool is_first_run); 70 71 content::TestBrowserThreadBundle thread_bundle_; 72 base::ShadowingAtExitManager at_exit_manager_; 73 base::ScopedTempDir temp_dir_; 74 scoped_ptr<TestingProfile> profile_; 75 base::FilePath extensions_install_dir_; 76 base::FilePath data_dir_; 77 // Managed by extensions::ExtensionSystemFactory. 78 ExtensionService* service_; 79 extensions::ManagementPolicy* management_policy_; 80 size_t expected_extensions_count_; 81 82#if defined OS_CHROMEOS 83 chromeos::ScopedTestDeviceSettingsService test_device_settings_service_; 84 chromeos::ScopedTestCrosSettings test_cros_settings_; 85 chromeos::ScopedTestUserManager test_user_manager_; 86#endif 87}; 88 89#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_UNITTEST_H_ 90