Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(80)

Side by Side Diff: chrome/browser/extensions/extension_service_unittest.cc

Issue 10683005: Remove two deprecated methods from base::Version (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ... Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 167
168 void RemoveExtension(const std::string& id) { 168 void RemoveExtension(const std::string& id) {
169 extension_map_.erase(id); 169 extension_map_.erase(id);
170 } 170 }
171 171
172 // ExternalExtensionProvider implementation: 172 // ExternalExtensionProvider implementation:
173 virtual void VisitRegisteredExtension() OVERRIDE { 173 virtual void VisitRegisteredExtension() OVERRIDE {
174 visit_count_++; 174 visit_count_++;
175 for (DataMap::const_iterator i = extension_map_.begin(); 175 for (DataMap::const_iterator i = extension_map_.begin();
176 i != extension_map_.end(); ++i) { 176 i != extension_map_.end(); ++i) {
177 scoped_ptr<Version> version; 177 Version version(i->second.first);
178 version.reset(Version::GetVersionFromString(i->second.first));
179 178
180 visitor_->OnExternalExtensionFileFound( 179 visitor_->OnExternalExtensionFileFound(
181 i->first, version.get(), i->second.second, location_, 180 i->first, &version, i->second.second, location_,
182 Extension::NO_FLAGS, false); 181 Extension::NO_FLAGS, false);
183 } 182 }
184 visitor_->OnExternalProviderReady(this); 183 visitor_->OnExternalProviderReady(this);
185 } 184 }
186 185
187 virtual bool HasExtension(const std::string& id) const OVERRIDE { 186 virtual bool HasExtension(const std::string& id) const OVERRIDE {
188 return extension_map_.find(id) != extension_map_.end(); 187 return extension_map_.find(id) != extension_map_.end();
189 } 188 }
190 189
191 virtual bool GetExtensionDetails( 190 virtual bool GetExtensionDetails(
192 const std::string& id, 191 const std::string& id,
193 Extension::Location* location, 192 Extension::Location* location,
194 scoped_ptr<Version>* version) const OVERRIDE { 193 scoped_ptr<Version>* version) const OVERRIDE {
195 DataMap::const_iterator it = extension_map_.find(id); 194 DataMap::const_iterator it = extension_map_.find(id);
196 if (it == extension_map_.end()) 195 if (it == extension_map_.end())
197 return false; 196 return false;
198 197
199 if (version) 198 if (version)
200 version->reset(Version::GetVersionFromString(it->second.first)); 199 version->reset(new Version(it->second.first));
201 200
202 if (location) 201 if (location)
203 *location = location_; 202 *location = location_;
204 203
205 return true; 204 return true;
206 } 205 }
207 206
208 virtual bool IsReady() const OVERRIDE { 207 virtual bool IsReady() const OVERRIDE {
209 return true; 208 return true;
210 } 209 }
(...skipping 1043 matching lines...) Expand 10 before | Expand all | Expand 10 after
1254 // extension object. 1253 // extension object.
1255 TEST_F(ExtensionServiceTest, InstallingExternalExtensionWithFlags) { 1254 TEST_F(ExtensionServiceTest, InstallingExternalExtensionWithFlags) {
1256 const char kPrefFromBookmark[] = "from_bookmark"; 1255 const char kPrefFromBookmark[] = "from_bookmark";
1257 1256
1258 InitializeEmptyExtensionService(); 1257 InitializeEmptyExtensionService();
1259 1258
1260 FilePath path = data_dir_.AppendASCII("good.crx"); 1259 FilePath path = data_dir_.AppendASCII("good.crx");
1261 set_extensions_enabled(true); 1260 set_extensions_enabled(true);
1262 1261
1263 // Register and install an external extension. 1262 // Register and install an external extension.
1264 scoped_ptr<Version> version(Version::GetVersionFromString("1.0.0.0")); 1263 Version version("1.0.0.0");
1265 service_->OnExternalExtensionFileFound( 1264 service_->OnExternalExtensionFileFound(
1266 good_crx, 1265 good_crx,
1267 version.get(), 1266 &version,
1268 path, 1267 path,
1269 Extension::EXTERNAL_PREF, 1268 Extension::EXTERNAL_PREF,
1270 Extension::FROM_BOOKMARK, 1269 Extension::FROM_BOOKMARK,
1271 false /* mark_acknowledged */); 1270 false /* mark_acknowledged */);
1272 loop_.RunAllPending(); 1271 loop_.RunAllPending();
1273 1272
1274 const Extension* extension = service_->GetExtensionById(good_crx, false); 1273 const Extension* extension = service_->GetExtensionById(good_crx, false);
1275 ASSERT_TRUE(extension); 1274 ASSERT_TRUE(extension);
1276 ASSERT_TRUE(extension->from_bookmark()); 1275 ASSERT_TRUE(extension->from_bookmark());
1277 ValidateBooleanPref(good_crx, kPrefFromBookmark, true); 1276 ValidateBooleanPref(good_crx, kPrefFromBookmark, true);
1278 1277
1279 // Upgrade to version 2.0, the flag should be preserved. 1278 // Upgrade to version 2.0, the flag should be preserved.
1280 path = data_dir_.AppendASCII("good2.crx"); 1279 path = data_dir_.AppendASCII("good2.crx");
1281 UpdateExtension(good_crx, path, ENABLED); 1280 UpdateExtension(good_crx, path, ENABLED);
1282 ValidateBooleanPref(good_crx, kPrefFromBookmark, true); 1281 ValidateBooleanPref(good_crx, kPrefFromBookmark, true);
1283 extension = service_->GetExtensionById(good_crx, false); 1282 extension = service_->GetExtensionById(good_crx, false);
1284 ASSERT_TRUE(extension); 1283 ASSERT_TRUE(extension);
1285 ASSERT_TRUE(extension->from_bookmark()); 1284 ASSERT_TRUE(extension->from_bookmark());
1286 } 1285 }
1287 1286
1288 // Test the handling of Extension::EXTERNAL_EXTENSION_UNINSTALLED 1287 // Test the handling of Extension::EXTERNAL_EXTENSION_UNINSTALLED
1289 TEST_F(ExtensionServiceTest, UninstallingExternalExtensions) { 1288 TEST_F(ExtensionServiceTest, UninstallingExternalExtensions) {
1290 InitializeEmptyExtensionService(); 1289 InitializeEmptyExtensionService();
1291 1290
1292 FilePath path = data_dir_.AppendASCII("good.crx"); 1291 FilePath path = data_dir_.AppendASCII("good.crx");
1293 set_extensions_enabled(true); 1292 set_extensions_enabled(true);
1294 1293
1295 scoped_ptr<Version> version; 1294 Version version("1.0.0.0");
1296 version.reset(Version::GetVersionFromString("1.0.0.0"));
1297 // Install an external extension. 1295 // Install an external extension.
1298 service_->OnExternalExtensionFileFound(good_crx, version.get(), 1296 service_->OnExternalExtensionFileFound(good_crx, &version,
1299 path, Extension::EXTERNAL_PREF, 1297 path, Extension::EXTERNAL_PREF,
1300 Extension::NO_FLAGS, false); 1298 Extension::NO_FLAGS, false);
1301 loop_.RunAllPending(); 1299 loop_.RunAllPending();
1302 ASSERT_TRUE(service_->GetExtensionById(good_crx, false)); 1300 ASSERT_TRUE(service_->GetExtensionById(good_crx, false));
1303 1301
1304 // Uninstall it and check that its killbit gets set. 1302 // Uninstall it and check that its killbit gets set.
1305 UninstallExtension(good_crx, false); 1303 UninstallExtension(good_crx, false);
1306 ValidateIntegerPref(good_crx, "location", 1304 ValidateIntegerPref(good_crx, "location",
1307 Extension::EXTERNAL_EXTENSION_UNINSTALLED); 1305 Extension::EXTERNAL_EXTENSION_UNINSTALLED);
1308 1306
1309 // Try to re-install it externally. This should fail because of the killbit. 1307 // Try to re-install it externally. This should fail because of the killbit.
1310 service_->OnExternalExtensionFileFound(good_crx, version.get(), 1308 service_->OnExternalExtensionFileFound(good_crx, &version,
1311 path, Extension::EXTERNAL_PREF, 1309 path, Extension::EXTERNAL_PREF,
1312 Extension::NO_FLAGS, false); 1310 Extension::NO_FLAGS, false);
1313 loop_.RunAllPending(); 1311 loop_.RunAllPending();
1314 ASSERT_TRUE(NULL == service_->GetExtensionById(good_crx, false)); 1312 ASSERT_TRUE(NULL == service_->GetExtensionById(good_crx, false));
1315 ValidateIntegerPref(good_crx, "location", 1313 ValidateIntegerPref(good_crx, "location",
1316 Extension::EXTERNAL_EXTENSION_UNINSTALLED); 1314 Extension::EXTERNAL_EXTENSION_UNINSTALLED);
1317 1315
1318 version.reset(Version::GetVersionFromString("1.0.0.1")); 1316 version = Version("1.0.0.1");
1319 // Repeat the same thing with a newer version of the extension. 1317 // Repeat the same thing with a newer version of the extension.
1320 path = data_dir_.AppendASCII("good2.crx"); 1318 path = data_dir_.AppendASCII("good2.crx");
1321 service_->OnExternalExtensionFileFound(good_crx, version.get(), 1319 service_->OnExternalExtensionFileFound(good_crx, &version,
1322 path, Extension::EXTERNAL_PREF, 1320 path, Extension::EXTERNAL_PREF,
1323 Extension::NO_FLAGS, false); 1321 Extension::NO_FLAGS, false);
1324 loop_.RunAllPending(); 1322 loop_.RunAllPending();
1325 ASSERT_TRUE(NULL == service_->GetExtensionById(good_crx, false)); 1323 ASSERT_TRUE(NULL == service_->GetExtensionById(good_crx, false));
1326 ValidateIntegerPref(good_crx, "location", 1324 ValidateIntegerPref(good_crx, "location",
1327 Extension::EXTERNAL_EXTENSION_UNINSTALLED); 1325 Extension::EXTERNAL_EXTENSION_UNINSTALLED);
1328 1326
1329 // Try adding the same extension from an external update URL. 1327 // Try adding the same extension from an external update URL.
1330 ASSERT_FALSE(service_->pending_extension_manager()->AddFromExternalUpdateUrl( 1328 ASSERT_FALSE(service_->pending_extension_manager()->AddFromExternalUpdateUrl(
1331 good_crx, 1329 good_crx,
(...skipping 30 matching lines...) Expand all
1362 MockExtensionProvider provider(NULL, Extension::EXTERNAL_REGISTRY); 1360 MockExtensionProvider provider(NULL, Extension::EXTERNAL_REGISTRY);
1363 service_->OnExternalProviderReady(&provider); 1361 service_->OnExternalProviderReady(&provider);
1364 } 1362 }
1365 1363
1366 // Test that external extensions with incorrect IDs are not installed. 1364 // Test that external extensions with incorrect IDs are not installed.
1367 TEST_F(ExtensionServiceTest, FailOnWrongId) { 1365 TEST_F(ExtensionServiceTest, FailOnWrongId) {
1368 InitializeEmptyExtensionService(); 1366 InitializeEmptyExtensionService();
1369 FilePath path = data_dir_.AppendASCII("good.crx"); 1367 FilePath path = data_dir_.AppendASCII("good.crx");
1370 set_extensions_enabled(true); 1368 set_extensions_enabled(true);
1371 1369
1372 scoped_ptr<Version> version; 1370 Version version("1.0.0.0");
1373 version.reset(Version::GetVersionFromString("1.0.0.0"));
1374 1371
1375 const std::string wrong_id = all_zero; 1372 const std::string wrong_id = all_zero;
1376 const std::string correct_id = good_crx; 1373 const std::string correct_id = good_crx;
1377 ASSERT_NE(correct_id, wrong_id); 1374 ASSERT_NE(correct_id, wrong_id);
1378 1375
1379 // Install an external extension with an ID from the external 1376 // Install an external extension with an ID from the external
1380 // source that is not equal to the ID in the extension manifest. 1377 // source that is not equal to the ID in the extension manifest.
1381 service_->OnExternalExtensionFileFound( 1378 service_->OnExternalExtensionFileFound(
1382 wrong_id, version.get(), path, Extension::EXTERNAL_PREF, 1379 wrong_id, &version, path, Extension::EXTERNAL_PREF,
1383 Extension::NO_FLAGS, false); 1380 Extension::NO_FLAGS, false);
1384 1381
1385 loop_.RunAllPending(); 1382 loop_.RunAllPending();
1386 ASSERT_FALSE(service_->GetExtensionById(good_crx, false)); 1383 ASSERT_FALSE(service_->GetExtensionById(good_crx, false));
1387 1384
1388 // Try again with the right ID. Expect success. 1385 // Try again with the right ID. Expect success.
1389 service_->OnExternalExtensionFileFound( 1386 service_->OnExternalExtensionFileFound(
1390 correct_id, version.get(), path, Extension::EXTERNAL_PREF, 1387 correct_id, &version, path, Extension::EXTERNAL_PREF,
1391 Extension::NO_FLAGS, false); 1388 Extension::NO_FLAGS, false);
1392 loop_.RunAllPending(); 1389 loop_.RunAllPending();
1393 ASSERT_TRUE(service_->GetExtensionById(good_crx, false)); 1390 ASSERT_TRUE(service_->GetExtensionById(good_crx, false));
1394 } 1391 }
1395 1392
1396 // Test that external extensions with incorrect versions are not installed. 1393 // Test that external extensions with incorrect versions are not installed.
1397 TEST_F(ExtensionServiceTest, FailOnWrongVersion) { 1394 TEST_F(ExtensionServiceTest, FailOnWrongVersion) {
1398 InitializeEmptyExtensionService(); 1395 InitializeEmptyExtensionService();
1399 FilePath path = data_dir_.AppendASCII("good.crx"); 1396 FilePath path = data_dir_.AppendASCII("good.crx");
1400 set_extensions_enabled(true); 1397 set_extensions_enabled(true);
1401 1398
1402 // Install an external extension with a version from the external 1399 // Install an external extension with a version from the external
1403 // source that is not equal to the version in the extension manifest. 1400 // source that is not equal to the version in the extension manifest.
1404 scoped_ptr<Version> wrong_version; 1401 Version wrong_version("1.2.3.4");
1405 wrong_version.reset(Version::GetVersionFromString("1.2.3.4"));
1406 service_->OnExternalExtensionFileFound( 1402 service_->OnExternalExtensionFileFound(
1407 good_crx, wrong_version.get(), path, Extension::EXTERNAL_PREF, 1403 good_crx, &wrong_version, path, Extension::EXTERNAL_PREF,
1408 Extension::NO_FLAGS, false); 1404 Extension::NO_FLAGS, false);
1409 1405
1410 loop_.RunAllPending(); 1406 loop_.RunAllPending();
1411 ASSERT_FALSE(service_->GetExtensionById(good_crx, false)); 1407 ASSERT_FALSE(service_->GetExtensionById(good_crx, false));
1412 1408
1413 // Try again with the right version. Expect success. 1409 // Try again with the right version. Expect success.
1414 service_->pending_extension_manager()->Remove(good_crx); 1410 service_->pending_extension_manager()->Remove(good_crx);
1415 scoped_ptr<Version> correct_version; 1411 Version correct_version("1.0.0.0");
1416 correct_version.reset(Version::GetVersionFromString("1.0.0.0"));
1417 service_->OnExternalExtensionFileFound( 1412 service_->OnExternalExtensionFileFound(
1418 good_crx, correct_version.get(), path, Extension::EXTERNAL_PREF, 1413 good_crx, &correct_version, path, Extension::EXTERNAL_PREF,
1419 Extension::NO_FLAGS, false); 1414 Extension::NO_FLAGS, false);
1420 loop_.RunAllPending(); 1415 loop_.RunAllPending();
1421 ASSERT_TRUE(service_->GetExtensionById(good_crx, false)); 1416 ASSERT_TRUE(service_->GetExtensionById(good_crx, false));
1422 } 1417 }
1423 1418
1424 // Install a user script (they get converted automatically to an extension) 1419 // Install a user script (they get converted automatically to an extension)
1425 TEST_F(ExtensionServiceTest, InstallUserScript) { 1420 TEST_F(ExtensionServiceTest, InstallUserScript) {
1426 // The details of script conversion are tested elsewhere, this just tests 1421 // The details of script conversion are tested elsewhere, this just tests
1427 // integration with ExtensionService. 1422 // integration with ExtensionService.
1428 InitializeEmptyExtensionService(); 1423 InitializeEmptyExtensionService();
(...skipping 3329 matching lines...) Expand 10 before | Expand all | Expand 10 after
4758 4753
4759 // Skip install when the location has the same priority as the installed 4754 // Skip install when the location has the same priority as the installed
4760 // location. 4755 // location.
4761 EXPECT_FALSE(service_->OnExternalExtensionUpdateUrlFound( 4756 EXPECT_FALSE(service_->OnExternalExtensionUpdateUrlFound(
4762 kGoodId, GURL(kGoodUpdateURL), Extension::INTERNAL)); 4757 kGoodId, GURL(kGoodUpdateURL), Extension::INTERNAL));
4763 4758
4764 EXPECT_FALSE(pending->IsIdPending(kGoodId)); 4759 EXPECT_FALSE(pending->IsIdPending(kGoodId));
4765 } 4760 }
4766 4761
4767 TEST_F(ExtensionServiceTest, InstallPriorityExternalLocalFile) { 4762 TEST_F(ExtensionServiceTest, InstallPriorityExternalLocalFile) {
4768 scoped_ptr<Version> older_version; 4763 Version older_version("0.1.0.0");
4769 older_version.reset(Version::GetVersionFromString("0.1.0.0")); 4764 Version newer_version("2.0.0.0");
4770
4771 scoped_ptr<Version> newer_version;
4772 newer_version.reset(Version::GetVersionFromString("2.0.0.0"));
4773 4765
4774 // We don't want the extension to be installed. A path that doesn't 4766 // We don't want the extension to be installed. A path that doesn't
4775 // point to a valid CRX ensures this. 4767 // point to a valid CRX ensures this.
4776 const FilePath kInvalidPathToCrx = FilePath(); 4768 const FilePath kInvalidPathToCrx = FilePath();
4777 4769
4778 const int kCreationFlags = 0; 4770 const int kCreationFlags = 0;
4779 const bool kDontMarkAcknowledged = false; 4771 const bool kDontMarkAcknowledged = false;
4780 4772
4781 InitializeEmptyExtensionService(); 4773 InitializeEmptyExtensionService();
4782 4774
(...skipping 11 matching lines...) Expand all
4794 ASSERT_EQ(Extension::EXTERNAL_PREF, 4786 ASSERT_EQ(Extension::EXTERNAL_PREF,
4795 Extension::GetHigherPriorityLocation(Extension::EXTERNAL_PREF, 4787 Extension::GetHigherPriorityLocation(Extension::EXTERNAL_PREF,
4796 Extension::INTERNAL)); 4788 Extension::INTERNAL));
4797 4789
4798 PendingExtensionManager* pending = service_->pending_extension_manager(); 4790 PendingExtensionManager* pending = service_->pending_extension_manager();
4799 EXPECT_FALSE(pending->IsIdPending(kGoodId)); 4791 EXPECT_FALSE(pending->IsIdPending(kGoodId));
4800 4792
4801 // Simulate an external source adding the extension as INTERNAL. 4793 // Simulate an external source adding the extension as INTERNAL.
4802 EXPECT_TRUE( 4794 EXPECT_TRUE(
4803 service_->OnExternalExtensionFileFound( 4795 service_->OnExternalExtensionFileFound(
4804 kGoodId, older_version.get(), kInvalidPathToCrx, 4796 kGoodId, &older_version, kInvalidPathToCrx,
4805 Extension::INTERNAL, kCreationFlags, kDontMarkAcknowledged)); 4797 Extension::INTERNAL, kCreationFlags, kDontMarkAcknowledged));
4806 EXPECT_TRUE(pending->IsIdPending(kGoodId)); 4798 EXPECT_TRUE(pending->IsIdPending(kGoodId));
4807 WaitForCrxInstall(kInvalidPathToCrx, INSTALL_FAILED); 4799 WaitForCrxInstall(kInvalidPathToCrx, INSTALL_FAILED);
4808 4800
4809 // Simulate an external source adding the extension as EXTERNAL_PREF. 4801 // Simulate an external source adding the extension as EXTERNAL_PREF.
4810 EXPECT_TRUE( 4802 EXPECT_TRUE(
4811 service_->OnExternalExtensionFileFound( 4803 service_->OnExternalExtensionFileFound(
4812 kGoodId, older_version.get(), kInvalidPathToCrx, 4804 kGoodId, &older_version, kInvalidPathToCrx,
4813 Extension::EXTERNAL_PREF, kCreationFlags, kDontMarkAcknowledged)); 4805 Extension::EXTERNAL_PREF, kCreationFlags, kDontMarkAcknowledged));
4814 EXPECT_TRUE(pending->IsIdPending(kGoodId)); 4806 EXPECT_TRUE(pending->IsIdPending(kGoodId));
4815 WaitForCrxInstall(kInvalidPathToCrx, INSTALL_FAILED); 4807 WaitForCrxInstall(kInvalidPathToCrx, INSTALL_FAILED);
4816 4808
4817 // Simulate an external source adding as EXTERNAL_PREF again. 4809 // Simulate an external source adding as EXTERNAL_PREF again.
4818 EXPECT_TRUE( 4810 EXPECT_TRUE(
4819 service_->OnExternalExtensionFileFound( 4811 service_->OnExternalExtensionFileFound(
4820 kGoodId, older_version.get(), kInvalidPathToCrx, 4812 kGoodId, &older_version, kInvalidPathToCrx,
4821 Extension::EXTERNAL_PREF, kCreationFlags, kDontMarkAcknowledged)); 4813 Extension::EXTERNAL_PREF, kCreationFlags, kDontMarkAcknowledged));
4822 EXPECT_TRUE(pending->IsIdPending(kGoodId)); 4814 EXPECT_TRUE(pending->IsIdPending(kGoodId));
4823 WaitForCrxInstall(kInvalidPathToCrx, INSTALL_FAILED); 4815 WaitForCrxInstall(kInvalidPathToCrx, INSTALL_FAILED);
4824 4816
4825 // Try INTERNAL again. Should fail. 4817 // Try INTERNAL again. Should fail.
4826 EXPECT_FALSE( 4818 EXPECT_FALSE(
4827 service_->OnExternalExtensionFileFound( 4819 service_->OnExternalExtensionFileFound(
4828 kGoodId, older_version.get(), kInvalidPathToCrx, 4820 kGoodId, &older_version, kInvalidPathToCrx,
4829 Extension::INTERNAL, kCreationFlags, kDontMarkAcknowledged)); 4821 Extension::INTERNAL, kCreationFlags, kDontMarkAcknowledged));
4830 EXPECT_TRUE(pending->IsIdPending(kGoodId)); 4822 EXPECT_TRUE(pending->IsIdPending(kGoodId));
4831 4823
4832 // Now the registry adds the extension. 4824 // Now the registry adds the extension.
4833 EXPECT_TRUE( 4825 EXPECT_TRUE(
4834 service_->OnExternalExtensionFileFound( 4826 service_->OnExternalExtensionFileFound(
4835 kGoodId, older_version.get(), kInvalidPathToCrx, 4827 kGoodId, &older_version, kInvalidPathToCrx,
4836 Extension::EXTERNAL_REGISTRY, kCreationFlags, kDontMarkAcknowledged)); 4828 Extension::EXTERNAL_REGISTRY, kCreationFlags, kDontMarkAcknowledged));
4837 EXPECT_TRUE(pending->IsIdPending(kGoodId)); 4829 EXPECT_TRUE(pending->IsIdPending(kGoodId));
4838 WaitForCrxInstall(kInvalidPathToCrx, INSTALL_FAILED); 4830 WaitForCrxInstall(kInvalidPathToCrx, INSTALL_FAILED);
4839 4831
4840 // Registry outranks both external pref and internal, so both fail. 4832 // Registry outranks both external pref and internal, so both fail.
4841 EXPECT_FALSE( 4833 EXPECT_FALSE(
4842 service_->OnExternalExtensionFileFound( 4834 service_->OnExternalExtensionFileFound(
4843 kGoodId, older_version.get(), kInvalidPathToCrx, 4835 kGoodId, &older_version, kInvalidPathToCrx,
4844 Extension::EXTERNAL_PREF, kCreationFlags, kDontMarkAcknowledged)); 4836 Extension::EXTERNAL_PREF, kCreationFlags, kDontMarkAcknowledged));
4845 EXPECT_TRUE(pending->IsIdPending(kGoodId)); 4837 EXPECT_TRUE(pending->IsIdPending(kGoodId));
4846 4838
4847 EXPECT_FALSE( 4839 EXPECT_FALSE(
4848 service_->OnExternalExtensionFileFound( 4840 service_->OnExternalExtensionFileFound(
4849 kGoodId, older_version.get(), kInvalidPathToCrx, 4841 kGoodId, &older_version, kInvalidPathToCrx,
4850 Extension::INTERNAL, kCreationFlags, kDontMarkAcknowledged)); 4842 Extension::INTERNAL, kCreationFlags, kDontMarkAcknowledged));
4851 EXPECT_TRUE(pending->IsIdPending(kGoodId)); 4843 EXPECT_TRUE(pending->IsIdPending(kGoodId));
4852 4844
4853 pending->Remove(kGoodId); 4845 pending->Remove(kGoodId);
4854 4846
4855 // Install the extension. 4847 // Install the extension.
4856 FilePath path = data_dir_.AppendASCII("good.crx"); 4848 FilePath path = data_dir_.AppendASCII("good.crx");
4857 const Extension* ext = InstallCRX(path, INSTALL_NEW); 4849 const Extension* ext = InstallCRX(path, INSTALL_NEW);
4858 ValidatePrefKeyCount(1u); 4850 ValidatePrefKeyCount(1u);
4859 ValidateIntegerPref(good_crx, "state", Extension::ENABLED); 4851 ValidateIntegerPref(good_crx, "state", Extension::ENABLED);
4860 ValidateIntegerPref(good_crx, "location", Extension::INTERNAL); 4852 ValidateIntegerPref(good_crx, "location", Extension::INTERNAL);
4861 4853
4862 // Now test the logic of OnExternalExtensionFileFound() when the extension 4854 // Now test the logic of OnExternalExtensionFileFound() when the extension
4863 // being added is already installed. 4855 // being added is already installed.
4864 4856
4865 // Tests assume |older_version| is less than the installed version, and 4857 // Tests assume |older_version| is less than the installed version, and
4866 // |newer_version| is greater. Verify this: 4858 // |newer_version| is greater. Verify this:
4867 ASSERT_TRUE(older_version->IsOlderThan(ext->VersionString())); 4859 ASSERT_TRUE(older_version.IsOlderThan(ext->VersionString()));
4868 ASSERT_TRUE(ext->version()->IsOlderThan(newer_version->GetString())); 4860 ASSERT_TRUE(ext->version()->IsOlderThan(newer_version.GetString()));
4869 4861
4870 // An external install for the same location should fail if the version is 4862 // An external install for the same location should fail if the version is
4871 // older, or the same, and succeed if the version is newer. 4863 // older, or the same, and succeed if the version is newer.
4872 4864
4873 // Older than the installed version... 4865 // Older than the installed version...
4874 EXPECT_FALSE( 4866 EXPECT_FALSE(
4875 service_->OnExternalExtensionFileFound( 4867 service_->OnExternalExtensionFileFound(
4876 kGoodId, older_version.get(), kInvalidPathToCrx, 4868 kGoodId, &older_version, kInvalidPathToCrx,
4877 Extension::INTERNAL, kCreationFlags, kDontMarkAcknowledged)); 4869 Extension::INTERNAL, kCreationFlags, kDontMarkAcknowledged));
4878 EXPECT_FALSE(pending->IsIdPending(kGoodId)); 4870 EXPECT_FALSE(pending->IsIdPending(kGoodId));
4879 4871
4880 // Same version as the installed version... 4872 // Same version as the installed version...
4881 EXPECT_FALSE( 4873 EXPECT_FALSE(
4882 service_->OnExternalExtensionFileFound( 4874 service_->OnExternalExtensionFileFound(
4883 kGoodId, ext->version(), kInvalidPathToCrx, 4875 kGoodId, ext->version(), kInvalidPathToCrx,
4884 Extension::INTERNAL, kCreationFlags, kDontMarkAcknowledged)); 4876 Extension::INTERNAL, kCreationFlags, kDontMarkAcknowledged));
4885 EXPECT_FALSE(pending->IsIdPending(kGoodId)); 4877 EXPECT_FALSE(pending->IsIdPending(kGoodId));
4886 4878
4887 // Newer than the installed version... 4879 // Newer than the installed version...
4888 EXPECT_TRUE( 4880 EXPECT_TRUE(
4889 service_->OnExternalExtensionFileFound( 4881 service_->OnExternalExtensionFileFound(
4890 kGoodId, newer_version.get(), kInvalidPathToCrx, 4882 kGoodId, &newer_version, kInvalidPathToCrx,
4891 Extension::INTERNAL, kCreationFlags, kDontMarkAcknowledged)); 4883 Extension::INTERNAL, kCreationFlags, kDontMarkAcknowledged));
4892 EXPECT_TRUE(pending->IsIdPending(kGoodId)); 4884 EXPECT_TRUE(pending->IsIdPending(kGoodId));
4893 4885
4894 // An external install for a higher priority install source should succeed 4886 // An external install for a higher priority install source should succeed
4895 // if the version is greater. |older_version| is not... 4887 // if the version is greater. |older_version| is not...
4896 EXPECT_FALSE( 4888 EXPECT_FALSE(
4897 service_->OnExternalExtensionFileFound( 4889 service_->OnExternalExtensionFileFound(
4898 kGoodId, older_version.get(), kInvalidPathToCrx, 4890 kGoodId, &older_version, kInvalidPathToCrx,
4899 Extension::EXTERNAL_PREF, kCreationFlags, kDontMarkAcknowledged)); 4891 Extension::EXTERNAL_PREF, kCreationFlags, kDontMarkAcknowledged));
4900 EXPECT_TRUE(pending->IsIdPending(kGoodId)); 4892 EXPECT_TRUE(pending->IsIdPending(kGoodId));
4901 4893
4902 // |newer_version| is newer. 4894 // |newer_version| is newer.
4903 EXPECT_TRUE( 4895 EXPECT_TRUE(
4904 service_->OnExternalExtensionFileFound( 4896 service_->OnExternalExtensionFileFound(
4905 kGoodId, newer_version.get(), kInvalidPathToCrx, 4897 kGoodId, &newer_version, kInvalidPathToCrx,
4906 Extension::EXTERNAL_PREF, kCreationFlags, kDontMarkAcknowledged)); 4898 Extension::EXTERNAL_PREF, kCreationFlags, kDontMarkAcknowledged));
4907 EXPECT_TRUE(pending->IsIdPending(kGoodId)); 4899 EXPECT_TRUE(pending->IsIdPending(kGoodId));
4908 4900
4909 // An external install for an even higher priority install source should 4901 // An external install for an even higher priority install source should
4910 // succeed if the version is greater. 4902 // succeed if the version is greater.
4911 EXPECT_TRUE( 4903 EXPECT_TRUE(
4912 service_->OnExternalExtensionFileFound( 4904 service_->OnExternalExtensionFileFound(
4913 kGoodId, newer_version.get(), kInvalidPathToCrx, 4905 kGoodId, &newer_version, kInvalidPathToCrx,
4914 Extension::EXTERNAL_REGISTRY, kCreationFlags, kDontMarkAcknowledged)); 4906 Extension::EXTERNAL_REGISTRY, kCreationFlags, kDontMarkAcknowledged));
4915 EXPECT_TRUE(pending->IsIdPending(kGoodId)); 4907 EXPECT_TRUE(pending->IsIdPending(kGoodId));
4916 4908
4917 // Because EXTERNAL_PREF is a lower priority source than EXTERNAL_REGISTRY, 4909 // Because EXTERNAL_PREF is a lower priority source than EXTERNAL_REGISTRY,
4918 // adding from external pref will now fail. 4910 // adding from external pref will now fail.
4919 EXPECT_FALSE( 4911 EXPECT_FALSE(
4920 service_->OnExternalExtensionFileFound( 4912 service_->OnExternalExtensionFileFound(
4921 kGoodId, newer_version.get(), kInvalidPathToCrx, 4913 kGoodId, &newer_version, kInvalidPathToCrx,
4922 Extension::EXTERNAL_PREF, kCreationFlags, kDontMarkAcknowledged)); 4914 Extension::EXTERNAL_PREF, kCreationFlags, kDontMarkAcknowledged));
4923 EXPECT_TRUE(pending->IsIdPending(kGoodId)); 4915 EXPECT_TRUE(pending->IsIdPending(kGoodId));
4924 } 4916 }
4925 4917
4926 TEST_F(ExtensionServiceTest, ConcurrentExternalLocalFile) { 4918 TEST_F(ExtensionServiceTest, ConcurrentExternalLocalFile) {
4927 Version kVersion123("1.2.3"); 4919 Version kVersion123("1.2.3");
4928 Version kVersion124("1.2.4"); 4920 Version kVersion124("1.2.4");
4929 Version kVersion125("1.2.5"); 4921 Version kVersion125("1.2.5");
4930 const FilePath kInvalidPathToCrx = FilePath(); 4922 const FilePath kInvalidPathToCrx = FilePath();
4931 const int kCreationFlags = 0; 4923 const int kCreationFlags = 0;
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
5020 } 5012 }
5021 5013
5022 // Fake an external source adding a URL to fetch an extension from. 5014 // Fake an external source adding a URL to fetch an extension from.
5023 bool AddPendingExternalPrefUrl() { 5015 bool AddPendingExternalPrefUrl() {
5024 return service_->pending_extension_manager()->AddFromExternalUpdateUrl( 5016 return service_->pending_extension_manager()->AddFromExternalUpdateUrl(
5025 crx_id_, GURL(), Extension::EXTERNAL_PREF_DOWNLOAD); 5017 crx_id_, GURL(), Extension::EXTERNAL_PREF_DOWNLOAD);
5026 } 5018 }
5027 5019
5028 // Fake an external file from external_extensions.json. 5020 // Fake an external file from external_extensions.json.
5029 bool AddPendingExternalPrefFileInstall() { 5021 bool AddPendingExternalPrefFileInstall() {
5030 scoped_ptr<Version> version; 5022 Version version("1.0.0.0");
5031 version.reset(Version::GetVersionFromString("1.0.0.0"));
5032 5023
5033 return service_->OnExternalExtensionFileFound( 5024 return service_->OnExternalExtensionFileFound(
5034 crx_id_, version.get(), crx_path_, Extension::EXTERNAL_PREF, 5025 crx_id_, &version, crx_path_, Extension::EXTERNAL_PREF,
5035 Extension::NO_FLAGS, false); 5026 Extension::NO_FLAGS, false);
5036 } 5027 }
5037 5028
5038 // Fake a request from sync to install an extension. 5029 // Fake a request from sync to install an extension.
5039 bool AddPendingSyncInstall() { 5030 bool AddPendingSyncInstall() {
5040 return service_->pending_extension_manager()->AddFromSync( 5031 return service_->pending_extension_manager()->AddFromSync(
5041 crx_id_, GURL(kGoodUpdateURL), &IsExtension, kGoodInstallSilently); 5032 crx_id_, GURL(kGoodUpdateURL), &IsExtension, kGoodInstallSilently);
5042 } 5033 }
5043 5034
5044 // Fake a policy install. 5035 // Fake a policy install.
5045 bool AddPendingPolicyInstall() { 5036 bool AddPendingPolicyInstall() {
5046 scoped_ptr<Version> version;
5047 version.reset(Version::GetVersionFromString("1.0.0.0"));
5048
5049 // Get path to the CRX with id |kGoodId|. 5037 // Get path to the CRX with id |kGoodId|.
5050 return service_->OnExternalExtensionUpdateUrlFound( 5038 return service_->OnExternalExtensionUpdateUrlFound(
5051 crx_id_, GURL(), Extension::EXTERNAL_POLICY_DOWNLOAD); 5039 crx_id_, GURL(), Extension::EXTERNAL_POLICY_DOWNLOAD);
5052 } 5040 }
5053 5041
5054 // Get the install source of a pending extension. 5042 // Get the install source of a pending extension.
5055 Extension::Location GetPendingLocation() { 5043 Extension::Location GetPendingLocation() {
5056 const PendingExtensionInfo* info; 5044 const PendingExtensionInfo* info;
5057 EXPECT_TRUE((info = service_->pending_extension_manager()-> 5045 EXPECT_TRUE((info = service_->pending_extension_manager()->
5058 GetById(crx_id_))); 5046 GetById(crx_id_)));
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
5188 provider->UpdateOrAddExtension(hosted_app, "1.0.0.0", 5176 provider->UpdateOrAddExtension(hosted_app, "1.0.0.0",
5189 data_dir_.AppendASCII("hosted_app.crx")); 5177 data_dir_.AppendASCII("hosted_app.crx"));
5190 5178
5191 service_->CheckForExternalUpdates(); 5179 service_->CheckForExternalUpdates();
5192 loop_.RunAllPending(); 5180 loop_.RunAllPending();
5193 5181
5194 ASSERT_TRUE(service_->PopulateExtensionGlobalError( 5182 ASSERT_TRUE(service_->PopulateExtensionGlobalError(
5195 extension_global_error.get())); 5183 extension_global_error.get()));
5196 ASSERT_EQ(1u, extension_global_error->get_external_extension_ids()->size()); 5184 ASSERT_EQ(1u, extension_global_error->get_external_extension_ids()->size());
5197 } 5185 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/crx_installer.cc ('k') | chrome/browser/extensions/external_extension_provider_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698