| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 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 <stddef.h> | 5 #include <stddef.h> |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/files/file_util.h" | 9 #include "base/files/file_util.h" |
| 10 #include "base/files/scoped_temp_dir.h" | 10 #include "base/files/scoped_temp_dir.h" |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 202 fake_extension_system_factory_; | 202 fake_extension_system_factory_; |
| 203 }; | 203 }; |
| 204 | 204 |
| 205 TEST_F(UpdateServiceTest, BasicUpdateOperations) { | 205 TEST_F(UpdateServiceTest, BasicUpdateOperations) { |
| 206 // Create a temporary directory that a fake extension will live in and fill | 206 // Create a temporary directory that a fake extension will live in and fill |
| 207 // it with some test files. | 207 // it with some test files. |
| 208 base::ScopedTempDir temp_dir; | 208 base::ScopedTempDir temp_dir; |
| 209 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 209 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
| 210 base::FilePath foo_js(FILE_PATH_LITERAL("foo.js")); | 210 base::FilePath foo_js(FILE_PATH_LITERAL("foo.js")); |
| 211 base::FilePath bar_html(FILE_PATH_LITERAL("bar/bar.html")); | 211 base::FilePath bar_html(FILE_PATH_LITERAL("bar/bar.html")); |
| 212 ASSERT_TRUE(AddFileToDirectory(temp_dir.path(), foo_js, "hello")) | 212 ASSERT_TRUE(AddFileToDirectory(temp_dir.GetPath(), foo_js, "hello")) |
| 213 << "Failed to write " << temp_dir.path().value() << "/" << foo_js.value(); | 213 << "Failed to write " << temp_dir.GetPath().value() << "/" |
| 214 ASSERT_TRUE(AddFileToDirectory(temp_dir.path(), bar_html, "world")); | 214 << foo_js.value(); |
| 215 ASSERT_TRUE(AddFileToDirectory(temp_dir.GetPath(), bar_html, "world")); |
| 215 | 216 |
| 216 ExtensionBuilder builder; | 217 ExtensionBuilder builder; |
| 217 builder.SetManifest(DictionaryBuilder() | 218 builder.SetManifest(DictionaryBuilder() |
| 218 .Set("name", "Foo") | 219 .Set("name", "Foo") |
| 219 .Set("version", "1.0") | 220 .Set("version", "1.0") |
| 220 .Set("manifest_version", 2) | 221 .Set("manifest_version", 2) |
| 221 .Build()); | 222 .Build()); |
| 222 builder.SetID(crx_file::id_util::GenerateId("whatever")); | 223 builder.SetID(crx_file::id_util::GenerateId("whatever")); |
| 223 builder.SetPath(temp_dir.path()); | 224 builder.SetPath(temp_dir.GetPath()); |
| 224 | 225 |
| 225 scoped_refptr<Extension> extension1(builder.Build()); | 226 scoped_refptr<Extension> extension1(builder.Build()); |
| 226 | 227 |
| 227 ExtensionRegistry::Get(browser_context())->AddEnabled(extension1); | 228 ExtensionRegistry::Get(browser_context())->AddEnabled(extension1); |
| 228 std::vector<std::string> ids; | 229 std::vector<std::string> ids; |
| 229 ids.push_back(extension1->id()); | 230 ids.push_back(extension1->id()); |
| 230 | 231 |
| 231 // Start an update check and verify that the UpdateClient was sent the right | 232 // Start an update check and verify that the UpdateClient was sent the right |
| 232 // data. | 233 // data. |
| 233 update_service()->StartUpdateCheck(ids); | 234 update_service()->StartUpdateCheck(ids); |
| 234 std::vector<update_client::CrxComponent>* data = update_client()->data(); | 235 std::vector<update_client::CrxComponent>* data = update_client()->data(); |
| 235 ASSERT_NE(nullptr, data); | 236 ASSERT_NE(nullptr, data); |
| 236 ASSERT_EQ(1u, data->size()); | 237 ASSERT_EQ(1u, data->size()); |
| 237 | 238 |
| 238 ASSERT_EQ(data->at(0).version, *extension1->version()); | 239 ASSERT_EQ(data->at(0).version, *extension1->version()); |
| 239 update_client::CrxInstaller* installer = data->at(0).installer.get(); | 240 update_client::CrxInstaller* installer = data->at(0).installer.get(); |
| 240 ASSERT_NE(installer, nullptr); | 241 ASSERT_NE(installer, nullptr); |
| 241 | 242 |
| 242 // The GetInstalledFile method is used when processing differential updates | 243 // The GetInstalledFile method is used when processing differential updates |
| 243 // to get a path to an existing file in an extension. We want to test a | 244 // to get a path to an existing file in an extension. We want to test a |
| 244 // number of scenarios to be user we handle invalid relative paths, don't | 245 // number of scenarios to be user we handle invalid relative paths, don't |
| 245 // accidentally return paths outside the extension's dir, etc. | 246 // accidentally return paths outside the extension's dir, etc. |
| 246 base::FilePath tmp; | 247 base::FilePath tmp; |
| 247 EXPECT_TRUE(installer->GetInstalledFile(foo_js.MaybeAsASCII(), &tmp)); | 248 EXPECT_TRUE(installer->GetInstalledFile(foo_js.MaybeAsASCII(), &tmp)); |
| 248 EXPECT_EQ(temp_dir.path().Append(foo_js), tmp) << tmp.value(); | 249 EXPECT_EQ(temp_dir.GetPath().Append(foo_js), tmp) << tmp.value(); |
| 249 | 250 |
| 250 EXPECT_TRUE(installer->GetInstalledFile(bar_html.MaybeAsASCII(), &tmp)); | 251 EXPECT_TRUE(installer->GetInstalledFile(bar_html.MaybeAsASCII(), &tmp)); |
| 251 EXPECT_EQ(temp_dir.path().Append(bar_html), tmp) << tmp.value(); | 252 EXPECT_EQ(temp_dir.GetPath().Append(bar_html), tmp) << tmp.value(); |
| 252 | 253 |
| 253 EXPECT_FALSE(installer->GetInstalledFile("does_not_exist", &tmp)); | 254 EXPECT_FALSE(installer->GetInstalledFile("does_not_exist", &tmp)); |
| 254 EXPECT_FALSE(installer->GetInstalledFile("does/not/exist", &tmp)); | 255 EXPECT_FALSE(installer->GetInstalledFile("does/not/exist", &tmp)); |
| 255 EXPECT_FALSE(installer->GetInstalledFile("/does/not/exist", &tmp)); | 256 EXPECT_FALSE(installer->GetInstalledFile("/does/not/exist", &tmp)); |
| 256 EXPECT_FALSE(installer->GetInstalledFile("C:\\tmp", &tmp)); | 257 EXPECT_FALSE(installer->GetInstalledFile("C:\\tmp", &tmp)); |
| 257 | 258 |
| 258 base::FilePath system_temp_dir; | 259 base::FilePath system_temp_dir; |
| 259 ASSERT_TRUE(base::GetTempDir(&system_temp_dir)); | 260 ASSERT_TRUE(base::GetTempDir(&system_temp_dir)); |
| 260 EXPECT_FALSE( | 261 EXPECT_FALSE( |
| 261 installer->GetInstalledFile(system_temp_dir.MaybeAsASCII(), &tmp)); | 262 installer->GetInstalledFile(system_temp_dir.MaybeAsASCII(), &tmp)); |
| 262 | 263 |
| 263 // Test the install callback. | 264 // Test the install callback. |
| 264 base::ScopedTempDir new_version_dir; | 265 base::ScopedTempDir new_version_dir; |
| 265 ASSERT_TRUE(new_version_dir.CreateUniqueTempDir()); | 266 ASSERT_TRUE(new_version_dir.CreateUniqueTempDir()); |
| 266 std::unique_ptr<base::DictionaryValue> new_manifest( | 267 std::unique_ptr<base::DictionaryValue> new_manifest( |
| 267 extension1->manifest()->value()->DeepCopy()); | 268 extension1->manifest()->value()->DeepCopy()); |
| 268 new_manifest->SetString("version", "2.0"); | 269 new_manifest->SetString("version", "2.0"); |
| 269 | 270 |
| 270 installer->Install(*new_manifest, new_version_dir.path()); | 271 installer->Install(*new_manifest, new_version_dir.GetPath()); |
| 271 | 272 |
| 272 scoped_refptr<content::MessageLoopRunner> loop_runner = | 273 scoped_refptr<content::MessageLoopRunner> loop_runner = |
| 273 new content::MessageLoopRunner(); | 274 new content::MessageLoopRunner(); |
| 274 extension_system()->set_install_callback(loop_runner->QuitClosure()); | 275 extension_system()->set_install_callback(loop_runner->QuitClosure()); |
| 275 loop_runner->Run(); | 276 loop_runner->Run(); |
| 276 | 277 |
| 277 std::vector<FakeExtensionSystem::InstallUpdateRequest>* requests = | 278 std::vector<FakeExtensionSystem::InstallUpdateRequest>* requests = |
| 278 extension_system()->install_requests(); | 279 extension_system()->install_requests(); |
| 279 ASSERT_EQ(1u, requests->size()); | 280 ASSERT_EQ(1u, requests->size()); |
| 280 EXPECT_EQ(requests->at(0).extension_id, extension1->id()); | 281 EXPECT_EQ(requests->at(0).extension_id, extension1->id()); |
| 281 EXPECT_NE(requests->at(0).temp_dir.value(), new_version_dir.path().value()); | 282 EXPECT_NE(requests->at(0).temp_dir.value(), |
| 283 new_version_dir.GetPath().value()); |
| 282 } | 284 } |
| 283 | 285 |
| 284 TEST_F(UpdateServiceTest, UninstallPings) { | 286 TEST_F(UpdateServiceTest, UninstallPings) { |
| 285 UninstallPingSender sender(ExtensionRegistry::Get(browser_context()), | 287 UninstallPingSender sender(ExtensionRegistry::Get(browser_context()), |
| 286 base::Bind(&ShouldPing)); | 288 base::Bind(&ShouldPing)); |
| 287 | 289 |
| 288 // Build 3 extensions. | 290 // Build 3 extensions. |
| 289 scoped_refptr<Extension> extension1 = | 291 scoped_refptr<Extension> extension1 = |
| 290 test_util::BuildExtension(ExtensionBuilder()) | 292 test_util::BuildExtension(ExtensionBuilder()) |
| 291 .SetID(crx_file::id_util::GenerateId("1")) | 293 .SetID(crx_file::id_util::GenerateId("1")) |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 344 EXPECT_EQ(*extension3->version(), pings[1].version) << reason; | 346 EXPECT_EQ(*extension3->version(), pings[1].version) << reason; |
| 345 EXPECT_EQ(reason, pings[1].reason) << reason; | 347 EXPECT_EQ(reason, pings[1].reason) << reason; |
| 346 | 348 |
| 347 pings.clear(); | 349 pings.clear(); |
| 348 } | 350 } |
| 349 } | 351 } |
| 350 | 352 |
| 351 } // namespace | 353 } // namespace |
| 352 | 354 |
| 353 } // namespace extensions | 355 } // namespace extensions |
| OLD | NEW |