Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / chrome / browser / extensions / api / image_writer_private / image_writer_private_apitest.cc
bloba8c49da691b62f66a2dd90f57c69776f8e656cd0
1 // Copyright 2014 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/message_loop/message_loop.h"
6 #include "chrome/browser/extensions/api/file_system/file_system_api.h"
7 #include "chrome/browser/extensions/api/image_writer_private/operation.h"
8 #include "chrome/browser/extensions/api/image_writer_private/removable_storage_provider.h"
9 #include "chrome/browser/extensions/api/image_writer_private/test_utils.h"
10 #include "chrome/browser/extensions/extension_apitest.h"
11 #include "chrome/common/extensions/api/image_writer_private.h"
12 #include "content/public/browser/browser_thread.h"
14 namespace extensions {
16 using api::image_writer_private::RemovableStorageDevice;
17 using extensions::image_writer::FakeImageWriterClient;
19 class ImageWriterPrivateApiTest : public ExtensionApiTest {
20 public:
21 void SetUpInProcessBrowserTestFixture() override {
22 ExtensionApiTest::SetUpInProcessBrowserTestFixture();
23 test_utils_.SetUp(true);
25 ASSERT_TRUE(test_utils_.FillFile(test_utils_.GetImagePath(),
26 image_writer::kImagePattern,
27 image_writer::kTestFileSize));
28 ASSERT_TRUE(test_utils_.FillFile(test_utils_.GetDevicePath(),
29 image_writer::kDevicePattern,
30 image_writer::kTestFileSize));
32 scoped_refptr<StorageDeviceList> device_list(new StorageDeviceList);
34 RemovableStorageDevice* expected1 = new RemovableStorageDevice();
35 expected1->vendor = "Vendor 1";
36 expected1->model = "Model 1";
37 expected1->capacity = image_writer::kTestFileSize;
38 expected1->removable = true;
39 #if defined(OS_WIN)
40 expected1->storage_unit_id = test_utils_.GetDevicePath().AsUTF8Unsafe();
41 #else
42 expected1->storage_unit_id = test_utils_.GetDevicePath().value();
43 #endif
45 RemovableStorageDevice* expected2 = new RemovableStorageDevice();
46 expected2->vendor = "Vendor 2";
47 expected2->model = "Model 2";
48 expected2->capacity = image_writer::kTestFileSize << 2;
49 expected2->removable = false;
50 #if defined(OS_WIN)
51 expected2->storage_unit_id = test_utils_.GetDevicePath().AsUTF8Unsafe();
52 #else
53 expected2->storage_unit_id = test_utils_.GetDevicePath().value();
54 #endif
56 linked_ptr<RemovableStorageDevice> device1(expected1);
57 device_list->data.push_back(device1);
58 linked_ptr<RemovableStorageDevice> device2(expected2);
59 device_list->data.push_back(device2);
61 RemovableStorageProvider::SetDeviceListForTesting(device_list);
64 void TearDownInProcessBrowserTestFixture() override {
65 ExtensionApiTest::TearDownInProcessBrowserTestFixture();
66 test_utils_.TearDown();
67 RemovableStorageProvider::ClearDeviceListForTesting();
68 FileSystemChooseEntryFunction::StopSkippingPickerForTest();
71 #if !defined(OS_CHROMEOS)
72 void ImageWriterUtilityClientCall() {
73 content::BrowserThread::PostTask(
74 content::BrowserThread::FILE,
75 FROM_HERE,
76 base::Bind(&FakeImageWriterClient::Progress,
77 test_utils_.GetUtilityClient(),
78 0));
79 content::BrowserThread::PostTask(
80 content::BrowserThread::FILE,
81 FROM_HERE,
82 base::Bind(&FakeImageWriterClient::Progress,
83 test_utils_.GetUtilityClient(),
84 50));
85 content::BrowserThread::PostTask(
86 content::BrowserThread::FILE,
87 FROM_HERE,
88 base::Bind(&FakeImageWriterClient::Progress,
89 test_utils_.GetUtilityClient(),
90 100));
91 content::BrowserThread::PostTask(
92 content::BrowserThread::FILE,
93 FROM_HERE,
94 base::Bind(&FakeImageWriterClient::Success,
95 test_utils_.GetUtilityClient()));
97 #endif
99 protected:
100 base::MessageLoopForUI message_loop_;
101 image_writer::ImageWriterTestUtils test_utils_;
104 IN_PROC_BROWSER_TEST_F(ImageWriterPrivateApiTest, TestListDevices) {
105 ASSERT_TRUE(RunExtensionTest("image_writer_private/list_devices"))
106 << message_;
109 IN_PROC_BROWSER_TEST_F(ImageWriterPrivateApiTest, TestWriteFromFile) {
110 FileSystemChooseEntryFunction::RegisterTempExternalFileSystemForTest(
111 "test_temp", test_utils_.GetTempDir());
113 base::FilePath selected_image(test_utils_.GetImagePath());
114 FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest(
115 &selected_image);
117 #if !defined(OS_CHROMEOS)
118 test_utils_.GetUtilityClient()->SetWriteCallback(base::Bind(
119 &ImageWriterPrivateApiTest::ImageWriterUtilityClientCall, this));
120 test_utils_.GetUtilityClient()->SetVerifyCallback(base::Bind(
121 &ImageWriterPrivateApiTest::ImageWriterUtilityClientCall, this));
122 #endif
124 ASSERT_TRUE(RunPlatformAppTest("image_writer_private/write_from_file"))
125 << message_;
128 } // namespace extensions