| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 <stdint.h> | 5 #include <stdint.h> |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/callback_forward.h" | 10 #include "base/callback_forward.h" |
| 11 #include "base/threading/sequenced_worker_pool.h" | 11 #include "base/threading/sequenced_worker_pool.h" |
| 12 #include "chrome/browser/extensions/app_data_migrator.h" | 12 #include "chrome/browser/extensions/app_data_migrator.h" |
| 13 #include "chrome/browser/extensions/extension_special_storage_policy.h" | 13 #include "chrome/browser/extensions/extension_special_storage_policy.h" |
| 14 #include "chrome/test/base/testing_profile.h" | 14 #include "chrome/test/base/testing_profile.h" |
| 15 #include "content/public/browser/browser_thread.h" | 15 #include "content/public/browser/browser_thread.h" |
| 16 #include "content/public/browser/indexed_db_context.h" | 16 #include "content/public/browser/indexed_db_context.h" |
| 17 #include "content/public/browser/storage_partition.h" | 17 #include "content/public/browser/storage_partition.h" |
| 18 #include "content/public/test/mock_blob_url_request_context.h" | 18 #include "content/public/test/mock_blob_url_request_context.h" |
| 19 #include "content/public/test/test_browser_thread_bundle.h" | 19 #include "content/public/test/test_browser_thread_bundle.h" |
| 20 #include "extensions/browser/extension_registry.h" | 20 #include "extensions/browser/extension_registry.h" |
| 21 #include "extensions/common/extension.h" | 21 #include "extensions/common/extension.h" |
| 22 #include "extensions/common/extension_builder.h" | 22 #include "extensions/common/extension_builder.h" |
| 23 #include "extensions/common/manifest.h" | 23 #include "extensions/common/manifest.h" |
| 24 #include "storage/browser/fileapi/file_system_context.h" | 24 #include "storage/browser/fileapi/file_system_context.h" |
| 25 #include "storage/browser/fileapi/file_system_operation_runner.h" | 25 #include "storage/browser/fileapi/file_system_operation_runner.h" |
| 26 #include "storage/browser/fileapi/file_system_url.h" | 26 #include "storage/browser/fileapi/file_system_url.h" |
| 27 #include "testing/gtest/include/gtest/gtest.h" | 27 #include "testing/gtest/include/gtest/gtest.h" |
| 28 | 28 |
| 29 namespace { | 29 namespace { |
| 30 scoped_ptr<TestingProfile> GetTestingProfile() { | 30 std::unique_ptr<TestingProfile> GetTestingProfile() { |
| 31 TestingProfile::Builder profile_builder; | 31 TestingProfile::Builder profile_builder; |
| 32 return profile_builder.Build(); | 32 return profile_builder.Build(); |
| 33 } | 33 } |
| 34 } | 34 } |
| 35 | 35 |
| 36 namespace extensions { | 36 namespace extensions { |
| 37 | 37 |
| 38 class AppDataMigratorTest : public testing::Test { | 38 class AppDataMigratorTest : public testing::Test { |
| 39 public: | 39 public: |
| 40 AppDataMigratorTest() | 40 AppDataMigratorTest() |
| 41 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP) {} | 41 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP) {} |
| 42 | 42 |
| 43 void SetUp() override { | 43 void SetUp() override { |
| 44 profile_ = GetTestingProfile(); | 44 profile_ = GetTestingProfile(); |
| 45 registry_ = ExtensionRegistry::Get(profile_.get()); | 45 registry_ = ExtensionRegistry::Get(profile_.get()); |
| 46 migrator_ = scoped_ptr<AppDataMigrator>( | 46 migrator_ = std::unique_ptr<AppDataMigrator>( |
| 47 new AppDataMigrator(profile_.get(), registry_)); | 47 new AppDataMigrator(profile_.get(), registry_)); |
| 48 | 48 |
| 49 default_partition_ = | 49 default_partition_ = |
| 50 content::BrowserContext::GetDefaultStoragePartition(profile_.get()); | 50 content::BrowserContext::GetDefaultStoragePartition(profile_.get()); |
| 51 | 51 |
| 52 idb_context_ = default_partition_->GetIndexedDBContext(); | 52 idb_context_ = default_partition_->GetIndexedDBContext(); |
| 53 idb_context_->SetTaskRunnerForTesting( | 53 idb_context_->SetTaskRunnerForTesting( |
| 54 base::MessageLoop::current()->task_runner().get()); | 54 base::MessageLoop::current()->task_runner().get()); |
| 55 | 55 |
| 56 default_fs_context_ = default_partition_->GetFileSystemContext(); | 56 default_fs_context_ = default_partition_->GetFileSystemContext(); |
| 57 | 57 |
| 58 url_request_context_ = scoped_ptr<content::MockBlobURLRequestContext>( | 58 url_request_context_ = std::unique_ptr<content::MockBlobURLRequestContext>( |
| 59 new content::MockBlobURLRequestContext(default_fs_context_)); | 59 new content::MockBlobURLRequestContext(default_fs_context_)); |
| 60 } | 60 } |
| 61 | 61 |
| 62 void TearDown() override {} | 62 void TearDown() override {} |
| 63 | 63 |
| 64 protected: | 64 protected: |
| 65 content::TestBrowserThreadBundle thread_bundle_; | 65 content::TestBrowserThreadBundle thread_bundle_; |
| 66 scoped_ptr<TestingProfile> profile_; | 66 std::unique_ptr<TestingProfile> profile_; |
| 67 scoped_ptr<AppDataMigrator> migrator_; | 67 std::unique_ptr<AppDataMigrator> migrator_; |
| 68 content::StoragePartition* default_partition_; | 68 content::StoragePartition* default_partition_; |
| 69 ExtensionRegistry* registry_; | 69 ExtensionRegistry* registry_; |
| 70 storage::FileSystemContext* default_fs_context_; | 70 storage::FileSystemContext* default_fs_context_; |
| 71 content::IndexedDBContext* idb_context_; | 71 content::IndexedDBContext* idb_context_; |
| 72 scoped_ptr<content::MockBlobURLRequestContext> url_request_context_; | 72 std::unique_ptr<content::MockBlobURLRequestContext> url_request_context_; |
| 73 }; | 73 }; |
| 74 | 74 |
| 75 scoped_refptr<const Extension> GetTestExtension(bool platform_app) { | 75 scoped_refptr<const Extension> GetTestExtension(bool platform_app) { |
| 76 scoped_refptr<const Extension> app; | 76 scoped_refptr<const Extension> app; |
| 77 if (platform_app) { | 77 if (platform_app) { |
| 78 app = ExtensionBuilder() | 78 app = ExtensionBuilder() |
| 79 .SetManifest( | 79 .SetManifest( |
| 80 DictionaryBuilder() | 80 DictionaryBuilder() |
| 81 .Set("name", "test app") | 81 .Set("name", "test app") |
| 82 .Set("version", "1") | 82 .Set("version", "1") |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 base::MessageLoop::current()->Run(); | 176 base::MessageLoop::current()->Run(); |
| 177 fs_context->operation_runner()->Write(url_request_context, fs_persistent_url, | 177 fs_context->operation_runner()->Write(url_request_context, fs_persistent_url, |
| 178 blob1.GetBlobDataHandle(), 0, | 178 blob1.GetBlobDataHandle(), 0, |
| 179 base::Bind(&DidWrite)); | 179 base::Bind(&DidWrite)); |
| 180 base::MessageLoop::current()->Run(); | 180 base::MessageLoop::current()->Run(); |
| 181 } | 181 } |
| 182 | 182 |
| 183 void VerifyFileContents(base::File file, | 183 void VerifyFileContents(base::File file, |
| 184 const base::Closure& on_close_callback) { | 184 const base::Closure& on_close_callback) { |
| 185 ASSERT_EQ(14, file.GetLength()); | 185 ASSERT_EQ(14, file.GetLength()); |
| 186 scoped_ptr<char[]> buffer(new char[15]); | 186 std::unique_ptr<char[]> buffer(new char[15]); |
| 187 | 187 |
| 188 file.Read(0, buffer.get(), 14); | 188 file.Read(0, buffer.get(), 14); |
| 189 buffer.get()[14] = 0; | 189 buffer.get()[14] = 0; |
| 190 | 190 |
| 191 std::string expected = "Hello, world!\n"; | 191 std::string expected = "Hello, world!\n"; |
| 192 std::string actual = buffer.get(); | 192 std::string actual = buffer.get(); |
| 193 EXPECT_EQ(expected, actual); | 193 EXPECT_EQ(expected, actual); |
| 194 | 194 |
| 195 file.Close(); | 195 file.Close(); |
| 196 if (!on_close_callback.is_null()) | 196 if (!on_close_callback.is_null()) |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 275 content::StoragePartition* new_partition = | 275 content::StoragePartition* new_partition = |
| 276 content::BrowserContext::GetStoragePartitionForSite(profile_.get(), | 276 content::BrowserContext::GetStoragePartitionForSite(profile_.get(), |
| 277 extension_url); | 277 extension_url); |
| 278 | 278 |
| 279 ASSERT_NE(new_partition->GetPath(), default_partition_->GetPath()); | 279 ASSERT_NE(new_partition->GetPath(), default_partition_->GetPath()); |
| 280 | 280 |
| 281 VerifyTestFilesMigrated(new_partition, new_ext.get()); | 281 VerifyTestFilesMigrated(new_partition, new_ext.get()); |
| 282 } | 282 } |
| 283 | 283 |
| 284 } // namespace extensions | 284 } // namespace extensions |
| OLD | NEW |