1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/content_settings/cookie_settings_factory.h"
6 #include "chrome/browser/infobars/infobar_service.h"
7 #include "chrome/browser/ui/browser.h"
8 #include "chrome/browser/ui/tabs/tab_strip_model.h"
9 #include "chrome/browser/ui/views/collected_cookies_views.h"
10 #include "chrome/test/base/in_process_browser_test.h"
11 #include "chrome/test/base/ui_test_utils.h"
12 #include "components/content_settings/core/browser/cookie_settings.h"
13 #include "net/test/embedded_test_server/embedded_test_server.h"
15 class CollectedCookiesViewsTest
: public InProcessBrowserTest
{
17 void SetUpOnMainThread() override
{
18 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
21 CookieSettingsFactory::GetForProfile(browser()->profile())
22 ->SetDefaultCookieSetting(CONTENT_SETTING_BLOCK
);
24 // Load a page with cookies.
25 ui_test_utils::NavigateToURL(
26 browser(), embedded_test_server()->GetURL("/cookie1.html"));
28 // Spawn a cookies dialog. Note that |cookies_dialog_| will delete itself
29 // automatically when it closes.
30 cookies_dialog_
= new CollectedCookiesViews(
31 browser()->tab_strip_model()->GetActiveWebContents());
34 // Closing dialog with modified data will shows infobar.
35 void SetDialogChanged() { cookies_dialog_
->status_changed_
= true; }
37 void CloseCookiesDialog() { cookies_dialog_
->Close(); }
39 size_t infobar_count() const {
40 content::WebContents
* web_contents
=
41 browser()->tab_strip_model()->GetActiveWebContents();
43 InfoBarService::FromWebContents(web_contents
)->infobar_count() : 0;
47 CollectedCookiesViews
* cookies_dialog_
= nullptr;
50 IN_PROC_BROWSER_TEST_F(CollectedCookiesViewsTest
, CloseDialog
) {
51 // Test closing dialog without changing data.
53 EXPECT_EQ(0u, infobar_count());
56 IN_PROC_BROWSER_TEST_F(CollectedCookiesViewsTest
, ChangeAndCloseDialog
) {
57 // Test closing dialog with changing data. Dialog will show infobar.
60 EXPECT_EQ(1u, infobar_count());
63 IN_PROC_BROWSER_TEST_F(CollectedCookiesViewsTest
, ChangeAndNavigateAway
) {
64 // Test navigation after changing dialog data. Changed dialog should not show
65 // infobar or crash because InfoBarService is gone.
69 // Navigation in the owning tab will close dialog.
70 ui_test_utils::NavigateToURL(browser(),
71 embedded_test_server()->GetURL("/cookie2.html"));
73 EXPECT_EQ(0u, infobar_count());
76 IN_PROC_BROWSER_TEST_F(CollectedCookiesViewsTest
, ChangeAndCloseTab
) {
77 // Test closing tab after changing dialog data. Changed dialog should not
78 // show infobar or crash because InfoBarService is gone.
82 // Closing the owning tab will close dialog.
83 browser()->tab_strip_model()->GetActiveWebContents()->Close();
85 EXPECT_EQ(0u, infobar_count());