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

Side by Side Diff: chrome/browser/profile_resetter/profile_resetter_unittest.cc

Issue 21779002: Don't disable packaged / hosted Apps on profile_reset (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: upload again because git cl try fails to execute Created 7 years, 4 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
« no previous file with comments | « chrome/browser/profile_resetter/profile_resetter.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « chrome/browser/profile_resetter/profile_resetter.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698