Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/profile_resetter/profile_resetter.h" | 5 #include "chrome/browser/profile_resetter/profile_resetter.h" |
| 6 | 6 |
| 7 #include "base/json/json_string_value_serializer.h" | 7 #include "base/json/json_string_value_serializer.h" |
| 8 #include "base/prefs/pref_service.h" | 8 #include "base/prefs/pref_service.h" |
| 9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
| 10 #include "chrome/browser/content_settings/host_content_settings_map.h" | 10 #include "chrome/browser/content_settings/host_content_settings_map.h" |
| (...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 221 fetcher->set_response_headers(download_headers); | 221 fetcher->set_response_headers(download_headers); |
| 222 return fetcher.Pass(); | 222 return fetcher.Pass(); |
| 223 } | 223 } |
| 224 | 224 |
| 225 | 225 |
| 226 // helper functions ----------------------------------------------------------- | 226 // helper functions ----------------------------------------------------------- |
| 227 | 227 |
| 228 scoped_refptr<Extension> CreateExtension(const std::string& name, | 228 scoped_refptr<Extension> CreateExtension(const std::string& name, |
| 229 const base::FilePath& path, | 229 const base::FilePath& path, |
| 230 Manifest::Location location, | 230 Manifest::Location location, |
| 231 bool theme) { | 231 extensions::Manifest::Type type) { |
| 232 DictionaryValue manifest; | 232 DictionaryValue manifest; |
| 233 manifest.SetString(extension_manifest_keys::kVersion, "1.0.0.0"); | 233 manifest.SetString(extension_manifest_keys::kVersion, "1.0.0.0"); |
| 234 manifest.SetString(extension_manifest_keys::kName, name); | 234 manifest.SetString(extension_manifest_keys::kName, name); |
| 235 manifest.SetString("app.launch.web_url", "http://www.google.com"); | 235 switch (type) { |
| 236 if (theme) | 236 case extensions::Manifest::TYPE_THEME: |
| 237 manifest.Set(extension_manifest_keys::kTheme, new DictionaryValue); | 237 manifest.Set(extension_manifest_keys::kTheme, new DictionaryValue); |
| 238 break; | |
| 239 case extensions::Manifest::TYPE_HOSTED_APP: | |
| 240 manifest.SetString("app.launch.web_url", "http://www.google.com"); | |
| 241 break; | |
| 242 case extensions::Manifest::TYPE_EXTENSION: | |
| 243 // do nothing | |
| 244 break; | |
| 245 default: | |
| 246 NOTREACHED(); | |
| 247 } | |
| 238 manifest.SetString(extension_manifest_keys::kOmniboxKeyword, name); | 248 manifest.SetString(extension_manifest_keys::kOmniboxKeyword, name); |
| 239 std::string error; | 249 std::string error; |
| 240 scoped_refptr<Extension> extension = Extension::Create( | 250 scoped_refptr<Extension> extension = Extension::Create( |
| 241 path, | 251 path, |
| 242 location, | 252 location, |
| 243 manifest, | 253 manifest, |
| 244 Extension::NO_FLAGS, | 254 Extension::NO_FLAGS, |
| 245 &error); | 255 &error); |
| 246 EXPECT_TRUE(extension.get() != NULL) << error; | 256 EXPECT_TRUE(extension.get() != NULL) << error; |
| 247 return extension; | 257 return extension; |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 263 // Search engine's logic is tested by | 273 // Search engine's logic is tested by |
| 264 // TemplateURLServiceTest.ResetURLs. | 274 // TemplateURLServiceTest.ResetURLs. |
| 265 PrefService* prefs = profile()->GetPrefs(); | 275 PrefService* prefs = profile()->GetPrefs(); |
| 266 DCHECK(prefs); | 276 DCHECK(prefs); |
| 267 prefs->SetString(prefs::kLastPromptedGoogleURL, "http://www.foo.com/"); | 277 prefs->SetString(prefs::kLastPromptedGoogleURL, "http://www.foo.com/"); |
| 268 | 278 |
| 269 scoped_refptr<Extension> extension = CreateExtension( | 279 scoped_refptr<Extension> extension = CreateExtension( |
| 270 "xxx", | 280 "xxx", |
| 271 base::FilePath(FILE_PATH_LITERAL("//nonexistent")), | 281 base::FilePath(FILE_PATH_LITERAL("//nonexistent")), |
| 272 Manifest::COMPONENT, | 282 Manifest::COMPONENT, |
| 273 false); | 283 extensions::Manifest::TYPE_EXTENSION); |
| 274 service_->AddExtension(extension.get()); | 284 service_->AddExtension(extension.get()); |
| 275 | 285 |
| 276 ResetAndWait(ProfileResetter::DEFAULT_SEARCH_ENGINE); | 286 ResetAndWait(ProfileResetter::DEFAULT_SEARCH_ENGINE); |
| 277 | 287 |
| 278 // TemplateURLService should reset extension search engines. | 288 // TemplateURLService should reset extension search engines. |
| 279 TemplateURLService* model = | 289 TemplateURLService* model = |
| 280 TemplateURLServiceFactory::GetForProfile(profile()); | 290 TemplateURLServiceFactory::GetForProfile(profile()); |
| 281 TemplateURL* ext_url = model->GetTemplateURLForKeyword(ASCIIToUTF16("xxx")); | 291 TemplateURL* ext_url = model->GetTemplateURLForKeyword(ASCIIToUTF16("xxx")); |
| 282 ASSERT_TRUE(ext_url); | 292 ASSERT_TRUE(ext_url); |
| 283 EXPECT_TRUE(ext_url->IsExtensionKeyword()); | 293 EXPECT_TRUE(ext_url->IsExtensionKeyword()); |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 425 content_type, std::string(), &host_settings); | 435 content_type, std::string(), &host_settings); |
| 426 EXPECT_EQ(1U, host_settings.size()); | 436 EXPECT_EQ(1U, host_settings.size()); |
| 427 } | 437 } |
| 428 } | 438 } |
| 429 } | 439 } |
| 430 | 440 |
| 431 TEST_F(ProfileResetterTest, ResetExtensionsByDisabling) { | 441 TEST_F(ProfileResetterTest, ResetExtensionsByDisabling) { |
| 432 base::ScopedTempDir temp_dir; | 442 base::ScopedTempDir temp_dir; |
| 433 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 443 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
| 434 | 444 |
| 435 scoped_refptr<Extension> theme = CreateExtension("example1", temp_dir.path(), | 445 scoped_refptr<Extension> theme = |
| 436 Manifest::INVALID_LOCATION, | 446 CreateExtension("example1", |
| 437 true); | 447 temp_dir.path(), |
| 448 Manifest::INVALID_LOCATION, | |
| 449 extensions::Manifest::TYPE_THEME); | |
| 438 service_->FinishInstallationForTest(theme.get()); | 450 service_->FinishInstallationForTest(theme.get()); |
| 439 // Let ThemeService finish creating the theme pack. | 451 // Let ThemeService finish creating the theme pack. |
| 440 base::MessageLoop::current()->RunUntilIdle(); | 452 base::MessageLoop::current()->RunUntilIdle(); |
| 441 | 453 |
| 442 // ThemeService isn't compiled for Android. | 454 // ThemeService isn't compiled for Android. |
| 443 ThemeService* theme_service = | 455 ThemeService* theme_service = |
| 444 ThemeServiceFactory::GetForProfile(profile()); | 456 ThemeServiceFactory::GetForProfile(profile()); |
| 445 EXPECT_FALSE(theme_service->UsingDefaultTheme()); | 457 EXPECT_FALSE(theme_service->UsingDefaultTheme()); |
| 446 | 458 |
| 447 scoped_refptr<Extension> ext2 = CreateExtension( | 459 scoped_refptr<Extension> ext2 = CreateExtension( |
| 448 "example2", | 460 "example2", |
| 449 base::FilePath(FILE_PATH_LITERAL("//nonexistent")), | 461 base::FilePath(FILE_PATH_LITERAL("//nonexistent")), |
| 450 Manifest::INVALID_LOCATION, | 462 Manifest::INVALID_LOCATION, |
| 451 false); | 463 extensions::Manifest::TYPE_EXTENSION); |
| 452 service_->AddExtension(ext2.get()); | 464 service_->AddExtension(ext2.get()); |
| 453 // Components and external policy extensions shouldn't be deleted. | 465 // Components and external policy extensions shouldn't be deleted. |
| 454 scoped_refptr<Extension> ext3 = CreateExtension( | 466 scoped_refptr<Extension> ext3 = CreateExtension( |
| 455 "example3", | 467 "example3", |
| 456 base::FilePath(FILE_PATH_LITERAL("//nonexistent2")), | 468 base::FilePath(FILE_PATH_LITERAL("//nonexistent2")), |
| 457 Manifest::COMPONENT, | 469 Manifest::COMPONENT, |
| 458 false); | 470 extensions::Manifest::TYPE_EXTENSION); |
| 459 service_->AddExtension(ext3.get()); | 471 service_->AddExtension(ext3.get()); |
| 460 scoped_refptr<Extension> ext4 = | 472 scoped_refptr<Extension> ext4 = |
| 461 CreateExtension("example4", | 473 CreateExtension("example4", |
| 462 base::FilePath(FILE_PATH_LITERAL("//nonexistent3")), | 474 base::FilePath(FILE_PATH_LITERAL("//nonexistent3")), |
| 463 Manifest::EXTERNAL_POLICY_DOWNLOAD, | 475 Manifest::EXTERNAL_POLICY_DOWNLOAD, |
| 464 false); | 476 extensions::Manifest::TYPE_EXTENSION); |
| 465 service_->AddExtension(ext4.get()); | 477 service_->AddExtension(ext4.get()); |
| 466 EXPECT_EQ(4u, service_->extensions()->size()); | 478 EXPECT_EQ(4u, service_->extensions()->size()); |
| 467 | 479 |
| 468 ResetAndWait(ProfileResetter::EXTENSIONS); | 480 ResetAndWait(ProfileResetter::EXTENSIONS); |
| 469 | |
| 470 EXPECT_EQ(2u, service_->extensions()->size()); | 481 EXPECT_EQ(2u, service_->extensions()->size()); |
| 482 EXPECT_FALSE(service_->extensions()->Contains(theme->id())); | |
| 483 EXPECT_FALSE(service_->extensions()->Contains(ext2->id())); | |
| 471 EXPECT_TRUE(service_->extensions()->Contains(ext3->id())); | 484 EXPECT_TRUE(service_->extensions()->Contains(ext3->id())); |
| 472 EXPECT_TRUE(service_->extensions()->Contains(ext4->id())); | 485 EXPECT_TRUE(service_->extensions()->Contains(ext4->id())); |
| 473 EXPECT_TRUE(theme_service->UsingDefaultTheme()); | 486 EXPECT_TRUE(theme_service->UsingDefaultTheme()); |
| 474 } | 487 } |
| 475 | 488 |
| 476 TEST_F(ProfileResetterTest, ResetExtensionsByDisablingNonOrganic) { | 489 TEST_F(ProfileResetterTest, ResetExtensionsByDisablingNonOrganic) { |
| 477 scoped_refptr<Extension> ext2 = CreateExtension( | 490 scoped_refptr<Extension> ext2 = CreateExtension( |
| 478 "example2", | 491 "example2", |
| 479 base::FilePath(FILE_PATH_LITERAL("//nonexistent")), | 492 base::FilePath(FILE_PATH_LITERAL("//nonexistent")), |
| 480 Manifest::INVALID_LOCATION, | 493 Manifest::INVALID_LOCATION, |
| 481 false); | 494 extensions::Manifest::TYPE_EXTENSION); |
| 482 service_->AddExtension(ext2.get()); | 495 service_->AddExtension(ext2.get()); |
| 483 // Components and external policy extensions shouldn't be deleted. | 496 // Components and external policy extensions shouldn't be deleted. |
| 484 scoped_refptr<Extension> ext3 = CreateExtension( | 497 scoped_refptr<Extension> ext3 = CreateExtension( |
| 485 "example3", | 498 "example3", |
| 486 base::FilePath(FILE_PATH_LITERAL("//nonexistent2")), | 499 base::FilePath(FILE_PATH_LITERAL("//nonexistent2")), |
| 487 Manifest::INVALID_LOCATION, | 500 Manifest::INVALID_LOCATION, |
| 488 false); | 501 extensions::Manifest::TYPE_EXTENSION); |
| 489 service_->AddExtension(ext3.get()); | 502 service_->AddExtension(ext3.get()); |
| 490 EXPECT_EQ(2u, service_->extensions()->size()); | 503 EXPECT_EQ(2u, service_->extensions()->size()); |
| 491 | 504 |
| 492 std::string master_prefs(kDistributionConfig); | 505 std::string master_prefs(kDistributionConfig); |
| 493 ReplaceString(&master_prefs, "placeholder_for_id", ext3->id()); | 506 ReplaceString(&master_prefs, "placeholder_for_id", ext3->id()); |
| 494 | 507 |
| 495 ResetAndWait(ProfileResetter::EXTENSIONS, master_prefs); | 508 ResetAndWait(ProfileResetter::EXTENSIONS, master_prefs); |
| 496 | 509 |
| 497 EXPECT_EQ(1u, service_->extensions()->size()); | 510 EXPECT_EQ(1u, service_->extensions()->size()); |
| 498 EXPECT_TRUE(service_->extensions()->Contains(ext3->id())); | 511 EXPECT_TRUE(service_->extensions()->Contains(ext3->id())); |
| 499 } | 512 } |
| 500 | 513 |
| 514 TEST_F(ProfileResetterTest, ResetExtensionsCheckTypeFilter) { | |
| 515 base::ScopedTempDir temp_dir; | |
| 516 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | |
| 517 | |
| 518 scoped_refptr<Extension> ext1 = | |
| 519 CreateExtension("example1", | |
| 520 temp_dir.path(), | |
| 521 Manifest::INVALID_LOCATION, | |
| 522 extensions::Manifest::TYPE_THEME); | |
| 523 service_->FinishInstallationForTest(ext1.get()); | |
| 524 // Let ThemeService finish creating the theme pack. | |
| 525 base::MessageLoop::current()->RunUntilIdle(); | |
| 526 | |
| 527 // ThemeService isn't compiled for Android. | |
| 528 ThemeService* theme_service = | |
| 529 ThemeServiceFactory::GetForProfile(profile()); | |
| 530 EXPECT_FALSE(theme_service->UsingDefaultTheme()); | |
| 531 | |
| 532 scoped_refptr<Extension> ext2 = | |
| 533 CreateExtension("example2", | |
| 534 base::FilePath(FILE_PATH_LITERAL("//nonexistent2")), | |
| 535 Manifest::INVALID_LOCATION, | |
| 536 extensions::Manifest::TYPE_EXTENSION); | |
| 537 service_->AddExtension(ext2.get()); | |
| 538 | |
| 539 scoped_refptr<Extension> ext3 = | |
| 540 CreateExtension("example2", | |
| 541 base::FilePath(FILE_PATH_LITERAL("//nonexistent3")), | |
| 542 Manifest::INVALID_LOCATION, | |
| 543 extensions::Manifest::TYPE_HOSTED_APP); | |
| 544 service_->AddExtension(ext3.get()); | |
| 545 EXPECT_EQ(3u, service_->extensions()->size()); | |
| 546 | |
| 547 ResetAndWait(ProfileResetter::EXTENSIONS); | |
|
vasilii
2013/08/02 10:52:06
Blank line after.
battre
2013/08/02 11:54:12
Done.
| |
| 548 EXPECT_EQ(1u, service_->extensions()->size()); | |
| 549 EXPECT_FALSE(service_->extensions()->Contains(ext1->id())); | |
| 550 EXPECT_FALSE(service_->extensions()->Contains(ext2->id())); | |
| 551 EXPECT_TRUE(service_->extensions()->Contains(ext3->id())); | |
| 552 EXPECT_TRUE(theme_service->UsingDefaultTheme()); | |
| 553 } | |
| 554 | |
| 501 TEST_F(ProfileResetterTest, ResetStartPage) { | 555 TEST_F(ProfileResetterTest, ResetStartPage) { |
| 502 PrefService* prefs = profile()->GetPrefs(); | 556 PrefService* prefs = profile()->GetPrefs(); |
| 503 DCHECK(prefs); | 557 DCHECK(prefs); |
| 504 | 558 |
| 505 SessionStartupPref startup_pref(SessionStartupPref::URLS); | 559 SessionStartupPref startup_pref(SessionStartupPref::URLS); |
| 506 startup_pref.urls.push_back(GURL("http://foo")); | 560 startup_pref.urls.push_back(GURL("http://foo")); |
| 507 startup_pref.urls.push_back(GURL("http://bar")); | 561 startup_pref.urls.push_back(GURL("http://bar")); |
| 508 SessionStartupPref::SetStartupPref(prefs, startup_pref); | 562 SessionStartupPref::SetStartupPref(prefs, startup_pref); |
| 509 | 563 |
| 510 ResetAndWait(ProfileResetter::STARTUP_PAGES); | 564 ResetAndWait(ProfileResetter::STARTUP_PAGES); |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 527 EXPECT_EQ(SessionStartupPref::URLS, startup_pref.type); | 581 EXPECT_EQ(SessionStartupPref::URLS, startup_pref.type); |
| 528 const GURL urls[] = {GURL("http://goo.gl"), GURL("http://foo.de")}; | 582 const GURL urls[] = {GURL("http://goo.gl"), GURL("http://foo.de")}; |
| 529 EXPECT_EQ(std::vector<GURL>(urls, urls + arraysize(urls)), startup_pref.urls); | 583 EXPECT_EQ(std::vector<GURL>(urls, urls + arraysize(urls)), startup_pref.urls); |
| 530 } | 584 } |
| 531 | 585 |
| 532 TEST_F(PinnedTabsResetTest, ResetPinnedTabs) { | 586 TEST_F(PinnedTabsResetTest, ResetPinnedTabs) { |
| 533 scoped_refptr<Extension> extension_app = CreateExtension( | 587 scoped_refptr<Extension> extension_app = CreateExtension( |
| 534 "hello!", | 588 "hello!", |
| 535 base::FilePath(FILE_PATH_LITERAL("//nonexistent")), | 589 base::FilePath(FILE_PATH_LITERAL("//nonexistent")), |
| 536 Manifest::INVALID_LOCATION, | 590 Manifest::INVALID_LOCATION, |
| 537 false); | 591 extensions::Manifest::TYPE_EXTENSION); |
|
vasilii
2013/08/02 10:52:06
No. Here it's important to install app.
battre
2013/08/02 11:54:12
Done.
| |
| 538 scoped_ptr<content::WebContents> contents1(CreateWebContents()); | 592 scoped_ptr<content::WebContents> contents1(CreateWebContents()); |
| 539 extensions::TabHelper::CreateForWebContents(contents1.get()); | 593 extensions::TabHelper::CreateForWebContents(contents1.get()); |
| 540 extensions::TabHelper::FromWebContents(contents1.get())-> | 594 extensions::TabHelper::FromWebContents(contents1.get())-> |
| 541 SetExtensionApp(extension_app.get()); | 595 SetExtensionApp(extension_app.get()); |
| 542 scoped_ptr<content::WebContents> contents2(CreateWebContents()); | 596 scoped_ptr<content::WebContents> contents2(CreateWebContents()); |
| 543 scoped_ptr<content::WebContents> contents3(CreateWebContents()); | 597 scoped_ptr<content::WebContents> contents3(CreateWebContents()); |
| 544 scoped_ptr<content::WebContents> contents4(CreateWebContents()); | 598 scoped_ptr<content::WebContents> contents4(CreateWebContents()); |
| 545 TabStripModel* tab_strip_model = browser()->tab_strip_model(); | 599 TabStripModel* tab_strip_model = browser()->tab_strip_model(); |
| 546 | 600 |
| 547 tab_strip_model->AppendWebContents(contents4.get(), true); | 601 tab_strip_model->AppendWebContents(contents4.get(), true); |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 701 EXPECT_EQ(!!(field_mask & ResettableSettingsSnapshot::HOMEPAGE), | 755 EXPECT_EQ(!!(field_mask & ResettableSettingsSnapshot::HOMEPAGE), |
| 702 dict->GetString("homepage", &homepage)); | 756 dict->GetString("homepage", &homepage)); |
| 703 EXPECT_EQ(!!(field_mask & ResettableSettingsSnapshot::HOMEPAGE_IS_NTP), | 757 EXPECT_EQ(!!(field_mask & ResettableSettingsSnapshot::HOMEPAGE_IS_NTP), |
| 704 dict->GetBoolean("homepage_is_ntp", &homepage_is_ntp)); | 758 dict->GetBoolean("homepage_is_ntp", &homepage_is_ntp)); |
| 705 EXPECT_EQ(!!(field_mask & ResettableSettingsSnapshot::DSE_URL), | 759 EXPECT_EQ(!!(field_mask & ResettableSettingsSnapshot::DSE_URL), |
| 706 dict->GetString("default_search_engine", &default_search_engine)); | 760 dict->GetString("default_search_engine", &default_search_engine)); |
| 707 } | 761 } |
| 708 } | 762 } |
| 709 | 763 |
| 710 } // namespace | 764 } // namespace |
| OLD | NEW |