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
3 // found in the LICENSE file.
5 #include "base/command_line.h"
6 #include "chrome/browser/extensions/api/image_writer_private/error_messages.h"
7 #include "chrome/browser/extensions/api/image_writer_private/operation_manager.h"
8 #include "chrome/browser/extensions/api/image_writer_private/test_utils.h"
9 #include "chrome/browser/extensions/extension_service.h"
10 #include "chrome/browser/extensions/extension_system_factory.h"
11 #include "chrome/browser/extensions/test_extension_system.h"
12 #include "chrome/test/base/testing_profile.h"
13 #include "extensions/browser/event_router.h"
15 #if defined(OS_CHROMEOS)
16 #include "chrome/browser/chromeos/login/users/scoped_test_user_manager.h"
17 #include "chrome/browser/chromeos/settings/cros_settings.h"
18 #include "chrome/browser/chromeos/settings/device_settings_service.h"
21 namespace extensions {
22 namespace image_writer {
24 // A fake for the EventRouter. If tests require monitoring of interaction with
25 // the event router put the logic here.
26 class FakeEventRouter : public extensions::EventRouter {
28 explicit FakeEventRouter(Profile* profile) : EventRouter(profile, NULL) {}
30 virtual void DispatchEventToExtension(
31 const std::string& extension_id,
32 scoped_ptr<extensions::Event> event) OVERRIDE {
33 // Do nothing with the event as no tests currently care.
37 // A fake ExtensionSystem that returns a FakeEventRouter for event_router().
38 class FakeExtensionSystem : public extensions::TestExtensionSystem {
40 explicit FakeExtensionSystem(Profile* profile)
41 : TestExtensionSystem(profile) {
42 fake_event_router_.reset(new FakeEventRouter(profile));
45 virtual EventRouter* event_router() OVERRIDE {
46 return fake_event_router_.get();
50 scoped_ptr<FakeEventRouter> fake_event_router_;
53 // Factory function to register for the ExtensionSystem.
54 KeyedService* BuildFakeExtensionSystem(content::BrowserContext* profile) {
55 return new FakeExtensionSystem(static_cast<Profile*>(profile));
60 class ImageWriterOperationManagerTest : public ImageWriterUnitTestBase {
62 void StartCallback(bool success, const std::string& error) {
64 start_success_ = success;
68 void CancelCallback(bool success, const std::string& error) {
70 cancel_success_ = true;
71 cancel_error_ = error;
75 ImageWriterOperationManagerTest()
77 start_success_(false) {
80 virtual void SetUp() OVERRIDE {
81 ImageWriterUnitTestBase::SetUp();
82 extension_system_ = static_cast<FakeExtensionSystem*>(
83 ExtensionSystemFactory::GetInstance()->
84 SetTestingFactoryAndUse(&test_profile_, &BuildFakeExtensionSystem));
85 event_router_ = static_cast<FakeEventRouter*>(
86 extension_system_->event_router());
91 std::string start_error_;
95 std::string cancel_error_;
97 TestingProfile test_profile_;
98 FakeExtensionSystem* extension_system_;
99 FakeEventRouter* event_router_;
101 #if defined(OS_CHROMEOS)
102 chromeos::ScopedTestDeviceSettingsService test_device_settings_service_;
103 chromeos::ScopedTestCrosSettings test_cros_settings_;
104 chromeos::ScopedTestUserManager test_user_manager_;
108 TEST_F(ImageWriterOperationManagerTest, WriteFromFile) {
109 OperationManager manager(&test_profile_);
111 manager.StartWriteFromFile(
113 test_utils_.GetImagePath(),
114 test_utils_.GetDevicePath().AsUTF8Unsafe(),
115 base::Bind(&ImageWriterOperationManagerTest::StartCallback,
116 base::Unretained(this)));
118 EXPECT_TRUE(started_);
119 EXPECT_TRUE(start_success_);
120 EXPECT_EQ("", start_error_);
124 base::Bind(&ImageWriterOperationManagerTest::CancelCallback,
125 base::Unretained(this)));
127 EXPECT_TRUE(cancelled_);
128 EXPECT_TRUE(cancel_success_);
129 EXPECT_EQ("", cancel_error_);
131 base::RunLoop().RunUntilIdle();
134 TEST_F(ImageWriterOperationManagerTest, DestroyPartitions) {
135 OperationManager manager(&test_profile_);
137 manager.DestroyPartitions(
139 test_utils_.GetDevicePath().AsUTF8Unsafe(),
140 base::Bind(&ImageWriterOperationManagerTest::StartCallback,
141 base::Unretained(this)));
143 EXPECT_TRUE(started_);
144 EXPECT_TRUE(start_success_);
145 EXPECT_EQ("", start_error_);
149 base::Bind(&ImageWriterOperationManagerTest::CancelCallback,
150 base::Unretained(this)));
152 EXPECT_TRUE(cancelled_);
153 EXPECT_TRUE(cancel_success_);
154 EXPECT_EQ("", cancel_error_);
156 base::RunLoop().RunUntilIdle();
160 } // namespace image_writer
161 } // namespace extensions