OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 "chrome/browser/extensions/extension_service_unittest.h" | 5 #include "chrome/browser/extensions/extension_service_unittest.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <set> | 8 #include <set> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 #include "chrome/common/chrome_notification_types.h" | 56 #include "chrome/common/chrome_notification_types.h" |
57 #include "chrome/common/chrome_paths.h" | 57 #include "chrome/common/chrome_paths.h" |
58 #include "chrome/common/chrome_switches.h" | 58 #include "chrome/common/chrome_switches.h" |
59 #include "chrome/common/extensions/extension.h" | 59 #include "chrome/common/extensions/extension.h" |
60 #include "chrome/common/extensions/extension_l10n_util.h" | 60 #include "chrome/common/extensions/extension_l10n_util.h" |
61 #include "chrome/common/extensions/extension_manifest_constants.h" | 61 #include "chrome/common/extensions/extension_manifest_constants.h" |
62 #include "chrome/common/extensions/extension_resource.h" | 62 #include "chrome/common/extensions/extension_resource.h" |
63 #include "chrome/common/extensions/permissions/permission_set.h" | 63 #include "chrome/common/extensions/permissions/permission_set.h" |
64 #include "chrome/common/extensions/url_pattern.h" | 64 #include "chrome/common/extensions/url_pattern.h" |
65 #include "chrome/common/pref_names.h" | 65 #include "chrome/common/pref_names.h" |
66 #include "chrome/common/string_ordinal.h" | |
67 #include "chrome/common/url_constants.h" | 66 #include "chrome/common/url_constants.h" |
68 #include "chrome/test/base/testing_profile.h" | 67 #include "chrome/test/base/testing_profile.h" |
69 #include "content/public/browser/dom_storage_context.h" | 68 #include "content/public/browser/dom_storage_context.h" |
70 #include "content/public/browser/indexed_db_context.h" | 69 #include "content/public/browser/indexed_db_context.h" |
71 #include "content/public/browser/notification_registrar.h" | 70 #include "content/public/browser/notification_registrar.h" |
72 #include "content/public/browser/notification_service.h" | 71 #include "content/public/browser/notification_service.h" |
73 #include "content/public/browser/plugin_service.h" | 72 #include "content/public/browser/plugin_service.h" |
74 #include "content/public/browser/storage_partition.h" | 73 #include "content/public/browser/storage_partition.h" |
75 #include "content/public/common/content_constants.h" | 74 #include "content/public/common/content_constants.h" |
76 #include "content/public/test/test_browser_thread.h" | 75 #include "content/public/test/test_browser_thread.h" |
77 #include "googleurl/src/gurl.h" | 76 #include "googleurl/src/gurl.h" |
78 #include "grit/browser_resources.h" | 77 #include "grit/browser_resources.h" |
79 #include "net/cookies/canonical_cookie.h" | 78 #include "net/cookies/canonical_cookie.h" |
80 #include "net/cookies/cookie_monster.h" | 79 #include "net/cookies/cookie_monster.h" |
81 #include "net/cookies/cookie_options.h" | 80 #include "net/cookies/cookie_options.h" |
82 #include "net/url_request/url_request_context.h" | 81 #include "net/url_request/url_request_context.h" |
83 #include "net/url_request/url_request_context_getter.h" | 82 #include "net/url_request/url_request_context_getter.h" |
| 83 #include "sync/api/string_ordinal.h" |
84 #include "sync/api/sync_error_factory.h" | 84 #include "sync/api/sync_error_factory.h" |
85 #include "sync/api/sync_error_factory_mock.h" | 85 #include "sync/api/sync_error_factory_mock.h" |
86 #include "sync/protocol/app_specifics.pb.h" | 86 #include "sync/protocol/app_specifics.pb.h" |
87 #include "sync/protocol/extension_specifics.pb.h" | 87 #include "sync/protocol/extension_specifics.pb.h" |
88 #include "sync/protocol/sync.pb.h" | 88 #include "sync/protocol/sync.pb.h" |
89 #include "testing/gtest/include/gtest/gtest.h" | 89 #include "testing/gtest/include/gtest/gtest.h" |
90 #include "testing/platform_test.h" | 90 #include "testing/platform_test.h" |
91 #include "webkit/database/database_tracker.h" | 91 #include "webkit/database/database_tracker.h" |
92 #include "webkit/database/database_util.h" | 92 #include "webkit/database/database_util.h" |
93 #include "webkit/plugins/npapi/mock_plugin_list.h" | 93 #include "webkit/plugins/npapi/mock_plugin_list.h" |
(...skipping 2003 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2097 FilePath extensions_path = data_dir_.AppendASCII("app_update"); | 2097 FilePath extensions_path = data_dir_.AppendASCII("app_update"); |
2098 | 2098 |
2099 // First install v1 of a hosted app. | 2099 // First install v1 of a hosted app. |
2100 const Extension* extension = | 2100 const Extension* extension = |
2101 InstallCRX(extensions_path.AppendASCII("v1.crx"), INSTALL_NEW); | 2101 InstallCRX(extensions_path.AppendASCII("v1.crx"), INSTALL_NEW); |
2102 ASSERT_EQ(1u, service_->extensions()->size()); | 2102 ASSERT_EQ(1u, service_->extensions()->size()); |
2103 std::string id = extension->id(); | 2103 std::string id = extension->id(); |
2104 ASSERT_EQ(std::string("1"), extension->version()->GetString()); | 2104 ASSERT_EQ(std::string("1"), extension->version()->GetString()); |
2105 | 2105 |
2106 // Modify the ordinals so we can distinguish them from the defaults. | 2106 // Modify the ordinals so we can distinguish them from the defaults. |
2107 StringOrdinal new_page_ordinal = sorting->GetPageOrdinal(id).CreateAfter(); | 2107 syncer::StringOrdinal new_page_ordinal = |
2108 StringOrdinal new_launch_ordinal = | 2108 sorting->GetPageOrdinal(id).CreateAfter(); |
| 2109 syncer::StringOrdinal new_launch_ordinal = |
2109 sorting->GetAppLaunchOrdinal(id).CreateBefore(); | 2110 sorting->GetAppLaunchOrdinal(id).CreateBefore(); |
2110 | 2111 |
2111 sorting->SetPageOrdinal(id, new_page_ordinal); | 2112 sorting->SetPageOrdinal(id, new_page_ordinal); |
2112 sorting->SetAppLaunchOrdinal(id, new_launch_ordinal); | 2113 sorting->SetAppLaunchOrdinal(id, new_launch_ordinal); |
2113 | 2114 |
2114 // Now try updating to v2. | 2115 // Now try updating to v2. |
2115 UpdateExtension(id, extensions_path.AppendASCII("v2.crx"), ENABLED); | 2116 UpdateExtension(id, extensions_path.AppendASCII("v2.crx"), ENABLED); |
2116 ASSERT_EQ(std::string("2"), | 2117 ASSERT_EQ(std::string("2"), |
2117 service_->GetExtensionById(id, false)->version()->GetString()); | 2118 service_->GetExtensionById(id, false)->version()->GetString()); |
2118 | 2119 |
2119 // Verify that the ordinals match. | 2120 // Verify that the ordinals match. |
2120 ASSERT_TRUE(new_page_ordinal.Equal(sorting->GetPageOrdinal(id))); | 2121 ASSERT_TRUE(new_page_ordinal.Equals(sorting->GetPageOrdinal(id))); |
2121 ASSERT_TRUE(new_launch_ordinal.Equal(sorting->GetAppLaunchOrdinal(id))); | 2122 ASSERT_TRUE(new_launch_ordinal.Equals(sorting->GetAppLaunchOrdinal(id))); |
2122 } | 2123 } |
2123 | 2124 |
2124 // Ensures that the CWS has properly initialized ordinals. | 2125 // Ensures that the CWS has properly initialized ordinals. |
2125 TEST_F(ExtensionServiceTest, EnsureCWSOrdinalsInitialized) { | 2126 TEST_F(ExtensionServiceTest, EnsureCWSOrdinalsInitialized) { |
2126 InitializeEmptyExtensionService(); | 2127 InitializeEmptyExtensionService(); |
2127 service_->component_loader()->Add(IDR_WEBSTORE_MANIFEST, | 2128 service_->component_loader()->Add(IDR_WEBSTORE_MANIFEST, |
2128 FilePath(FILE_PATH_LITERAL("web_store"))); | 2129 FilePath(FILE_PATH_LITERAL("web_store"))); |
2129 service_->Init(); | 2130 service_->Init(); |
2130 | 2131 |
2131 ExtensionSorting* sorting = service_->extension_prefs()->extension_sorting(); | 2132 ExtensionSorting* sorting = service_->extension_prefs()->extension_sorting(); |
(...skipping 2423 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4555 const Extension* app = | 4556 const Extension* app = |
4556 PackAndInstallCRX(data_dir_.AppendASCII("app"), INSTALL_NEW); | 4557 PackAndInstallCRX(data_dir_.AppendASCII("app"), INSTALL_NEW); |
4557 ASSERT_TRUE(app); | 4558 ASSERT_TRUE(app); |
4558 ASSERT_TRUE(app->is_app()); | 4559 ASSERT_TRUE(app->is_app()); |
4559 | 4560 |
4560 TestSyncProcessorStub processor; | 4561 TestSyncProcessorStub processor; |
4561 service_->MergeDataAndStartSyncing(syncer::APPS, syncer::SyncDataList(), | 4562 service_->MergeDataAndStartSyncing(syncer::APPS, syncer::SyncDataList(), |
4562 scoped_ptr<syncer::SyncChangeProcessor>(new TestSyncProcessorStub), | 4563 scoped_ptr<syncer::SyncChangeProcessor>(new TestSyncProcessorStub), |
4563 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 4564 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
4564 | 4565 |
4565 StringOrdinal initial_ordinal = StringOrdinal::CreateInitialOrdinal(); | 4566 syncer::StringOrdinal initial_ordinal = |
| 4567 syncer::StringOrdinal::CreateInitialOrdinal(); |
4566 { | 4568 { |
4567 syncer::SyncDataList list = service_->GetAllSyncData(syncer::APPS); | 4569 syncer::SyncDataList list = service_->GetAllSyncData(syncer::APPS); |
4568 ASSERT_EQ(list.size(), 1U); | 4570 ASSERT_EQ(list.size(), 1U); |
4569 | 4571 |
4570 extensions::AppSyncData app_sync_data(list[0]); | 4572 extensions::AppSyncData app_sync_data(list[0]); |
4571 EXPECT_TRUE(initial_ordinal.Equal(app_sync_data.app_launch_ordinal())); | 4573 EXPECT_TRUE(initial_ordinal.Equals(app_sync_data.app_launch_ordinal())); |
4572 EXPECT_TRUE(initial_ordinal.Equal(app_sync_data.page_ordinal())); | 4574 EXPECT_TRUE(initial_ordinal.Equals(app_sync_data.page_ordinal())); |
4573 } | 4575 } |
4574 | 4576 |
4575 ExtensionSorting* sorting = service_->extension_prefs()->extension_sorting(); | 4577 ExtensionSorting* sorting = service_->extension_prefs()->extension_sorting(); |
4576 sorting->SetAppLaunchOrdinal(app->id(), initial_ordinal.CreateAfter()); | 4578 sorting->SetAppLaunchOrdinal(app->id(), initial_ordinal.CreateAfter()); |
4577 { | 4579 { |
4578 syncer::SyncDataList list = service_->GetAllSyncData(syncer::APPS); | 4580 syncer::SyncDataList list = service_->GetAllSyncData(syncer::APPS); |
4579 ASSERT_EQ(list.size(), 1U); | 4581 ASSERT_EQ(list.size(), 1U); |
4580 | 4582 |
4581 extensions::AppSyncData app_sync_data(list[0]); | 4583 extensions::AppSyncData app_sync_data(list[0]); |
4582 EXPECT_TRUE(initial_ordinal.LessThan(app_sync_data.app_launch_ordinal())); | 4584 EXPECT_TRUE(initial_ordinal.LessThan(app_sync_data.app_launch_ordinal())); |
4583 EXPECT_TRUE(initial_ordinal.Equal(app_sync_data.page_ordinal())); | 4585 EXPECT_TRUE(initial_ordinal.Equals(app_sync_data.page_ordinal())); |
4584 } | 4586 } |
4585 | 4587 |
4586 sorting->SetPageOrdinal(app->id(), initial_ordinal.CreateAfter()); | 4588 sorting->SetPageOrdinal(app->id(), initial_ordinal.CreateAfter()); |
4587 { | 4589 { |
4588 syncer::SyncDataList list = service_->GetAllSyncData(syncer::APPS); | 4590 syncer::SyncDataList list = service_->GetAllSyncData(syncer::APPS); |
4589 ASSERT_EQ(list.size(), 1U); | 4591 ASSERT_EQ(list.size(), 1U); |
4590 | 4592 |
4591 extensions::AppSyncData app_sync_data(list[0]); | 4593 extensions::AppSyncData app_sync_data(list[0]); |
4592 EXPECT_TRUE(initial_ordinal.LessThan(app_sync_data.app_launch_ordinal())); | 4594 EXPECT_TRUE(initial_ordinal.LessThan(app_sync_data.app_launch_ordinal())); |
4593 EXPECT_TRUE(initial_ordinal.LessThan(app_sync_data.page_ordinal())); | 4595 EXPECT_TRUE(initial_ordinal.LessThan(app_sync_data.page_ordinal())); |
(...skipping 23 matching lines...) Expand all Loading... |
4617 ASSERT_EQ(list.size(), 3U); | 4619 ASSERT_EQ(list.size(), 3U); |
4618 | 4620 |
4619 extensions::AppSyncData data[kAppCount]; | 4621 extensions::AppSyncData data[kAppCount]; |
4620 for (size_t i = 0; i < kAppCount; ++i) { | 4622 for (size_t i = 0; i < kAppCount; ++i) { |
4621 data[i] = extensions::AppSyncData(list[i]); | 4623 data[i] = extensions::AppSyncData(list[i]); |
4622 } | 4624 } |
4623 | 4625 |
4624 // The sync data is not always in the same order our apps were installed in, | 4626 // The sync data is not always in the same order our apps were installed in, |
4625 // so we do that sorting here so we can make sure the values are changed as | 4627 // so we do that sorting here so we can make sure the values are changed as |
4626 // expected. | 4628 // expected. |
4627 StringOrdinal app_launch_ordinals[kAppCount]; | 4629 syncer::StringOrdinal app_launch_ordinals[kAppCount]; |
4628 for (size_t i = 0; i < kAppCount; ++i) { | 4630 for (size_t i = 0; i < kAppCount; ++i) { |
4629 for (size_t j = 0; j < kAppCount; ++j) { | 4631 for (size_t j = 0; j < kAppCount; ++j) { |
4630 if (apps[i]->id() == data[j].id()) | 4632 if (apps[i]->id() == data[j].id()) |
4631 app_launch_ordinals[i] = data[j].app_launch_ordinal(); | 4633 app_launch_ordinals[i] = data[j].app_launch_ordinal(); |
4632 } | 4634 } |
4633 } | 4635 } |
4634 | 4636 |
4635 EXPECT_TRUE(app_launch_ordinals[1].LessThan(app_launch_ordinals[0])); | 4637 EXPECT_TRUE(app_launch_ordinals[1].LessThan(app_launch_ordinals[0])); |
4636 EXPECT_TRUE(app_launch_ordinals[0].LessThan(app_launch_ordinals[2])); | 4638 EXPECT_TRUE(app_launch_ordinals[0].LessThan(app_launch_ordinals[2])); |
4637 } | 4639 } |
(...skipping 778 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5416 // This should NOT trigger an alert. | 5418 // This should NOT trigger an alert. |
5417 provider->UpdateOrAddExtension(hosted_app, "1.0.0.0", | 5419 provider->UpdateOrAddExtension(hosted_app, "1.0.0.0", |
5418 data_dir_.AppendASCII("hosted_app.crx")); | 5420 data_dir_.AppendASCII("hosted_app.crx")); |
5419 | 5421 |
5420 service_->CheckForExternalUpdates(); | 5422 service_->CheckForExternalUpdates(); |
5421 loop_.RunAllPending(); | 5423 loop_.RunAllPending(); |
5422 | 5424 |
5423 ASSERT_TRUE(service_->PopulateExtensionErrorUI(extension_error_ui.get())); | 5425 ASSERT_TRUE(service_->PopulateExtensionErrorUI(extension_error_ui.get())); |
5424 ASSERT_EQ(1u, extension_error_ui->get_external_extension_ids()->size()); | 5426 ASSERT_EQ(1u, extension_error_ui->get_external_extension_ids()->size()); |
5425 } | 5427 } |
OLD | NEW |