Commit 3888fbf6 authored by tapted's avatar tapted Committed by Commit bot

MacViews: Harmony for TabDialogs' dialogs (starting with Collected Cookies)

Collected cookies when invoked from the site info bubble (padlock ->
Cookies -> click the "X in use" link) is already hooked up to
--secondary-ui-md. However, it can also be shown via the content
settings bubble when a cookie is blocked.

We also need TabDialogs' Signin confirmation dialog switched to Harmony,
so set up a way to show Harmony dialogs from the TabDialogs interface.

Opt collected cookies into DialogBrowserTest to make it easy to invoke
for testing.

BUG=654151, 677012, 610428

Review-Url: https://codereview.chromium.org/2534743002
Cr-Commit-Position: refs/heads/master@{#443130}
parent 590f8e67
......@@ -2905,6 +2905,8 @@ split_static_library("ui") {
"cocoa/tab_contents/tab_contents_controller.mm",
"cocoa/tab_dialogs_cocoa.h",
"cocoa/tab_dialogs_cocoa.mm",
"cocoa/tab_dialogs_views_mac.h",
"cocoa/tab_dialogs_views_mac.mm",
"cocoa/tab_modal_confirm_dialog_mac.h",
"cocoa/tab_modal_confirm_dialog_mac.mm",
"cocoa/tabs/alert_indicator_button_cocoa.h",
......
......@@ -32,6 +32,9 @@ class TabDialogsCocoa : public TabDialogs {
const base::string16& main_text,
const base::string16& sub_text) override;
protected:
content::WebContents* web_contents() const { return web_contents_; }
private:
content::WebContents* web_contents_; // Weak. Owns this.
......
......@@ -9,14 +9,22 @@
#import "chrome/browser/ui/cocoa/hung_renderer_controller.h"
#import "chrome/browser/ui/cocoa/passwords/passwords_bubble_cocoa.h"
#import "chrome/browser/ui/cocoa/profiles/profile_signin_confirmation_dialog_cocoa.h"
#include "chrome/browser/ui/cocoa/tab_dialogs_views_mac.h"
#import "chrome/browser/ui/cocoa/validation_message_bubble_cocoa.h"
#include "content/public/browser/web_contents.h"
#include "ui/base/material_design/material_design_controller.h"
// static
void TabDialogs::CreateForWebContents(content::WebContents* contents) {
DCHECK(contents);
if (!FromWebContents(contents))
contents->SetUserData(UserDataKey(), new TabDialogsCocoa(contents));
if (!FromWebContents(contents)) {
TabDialogs* tab_dialogs =
ui::MaterialDesignController::IsSecondaryUiMaterial()
? new TabDialogsViewsMac(contents)
: new TabDialogsCocoa(contents);
contents->SetUserData(UserDataKey(), tab_dialogs);
}
}
TabDialogsCocoa::TabDialogsCocoa(content::WebContents* contents)
......
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_COCOA_TAB_DIALOGS_VIEWS_MAC_H_
#define CHROME_BROWSER_UI_COCOA_TAB_DIALOGS_VIEWS_MAC_H_
#include "chrome/browser/ui/cocoa/tab_dialogs_cocoa.h"
// Implementation of TabDialogs interface for toolkit-views dialogs on Mac.
class TabDialogsViewsMac : public TabDialogsCocoa {
public:
explicit TabDialogsViewsMac(content::WebContents* contents);
~TabDialogsViewsMac() override;
// TabDialogs:
void ShowCollectedCookies() override;
private:
DISALLOW_COPY_AND_ASSIGN(TabDialogsViewsMac);
};
#endif // CHROME_BROWSER_UI_COCOA_TAB_DIALOGS_VIEWS_MAC_H_
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/cocoa/tab_dialogs_views_mac.h"
#include "chrome/browser/ui/views/collected_cookies_views.h"
TabDialogsViewsMac::TabDialogsViewsMac(content::WebContents* contents)
: TabDialogsCocoa(contents) {}
TabDialogsViewsMac::~TabDialogsViewsMac() {}
void TabDialogsViewsMac::ShowCollectedCookies() {
// Deletes itself on close.
new CollectedCookiesViews(web_contents());
}
......@@ -4,54 +4,80 @@
#include <string>
#include "base/command_line.h"
#include "chrome/app/chrome_command_ids.h"
#include "chrome/browser/content_settings/cookie_settings_factory.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/tab_dialogs.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/browser/ui/test/test_browser_dialog.h"
#include "chrome/common/url_constants.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h"
#include "components/content_settings/core/browser/cookie_settings.h"
#include "net/test/embedded_test_server/embedded_test_server.h"
#include "ui/base/ui_base_switches.h"
typedef InProcessBrowserTest CollectedCookiesTest;
class CollectedCookiesTest : public DialogBrowserTest {
public:
CollectedCookiesTest() {}
// If this crashes on Windows, use http://crbug.com/79331
IN_PROC_BROWSER_TEST_F(CollectedCookiesTest, DoubleDisplay) {
ASSERT_TRUE(embedded_test_server()->Start());
// TestDialogInterface:
void ShowDialog(const std::string& name) override {
ASSERT_TRUE(embedded_test_server()->Start());
// Disable cookies.
CookieSettingsFactory::GetForProfile(browser()->profile())
->SetDefaultCookieSetting(CONTENT_SETTING_BLOCK);
// Disable cookies.
CookieSettingsFactory::GetForProfile(browser()->profile())
->SetDefaultCookieSetting(CONTENT_SETTING_BLOCK);
// Load a page with cookies.
ui_test_utils::NavigateToURL(
browser(), embedded_test_server()->GetURL("/cookie1.html"));
// Load a page with cookies.
ui_test_utils::NavigateToURL(
browser(), embedded_test_server()->GetURL("/cookie1.html"));
// Click on the info link twice.
content::WebContents* web_contents =
browser()->tab_strip_model()->GetActiveWebContents();
TabDialogs::FromWebContents(web_contents)->ShowCollectedCookies();
TabDialogs::FromWebContents(web_contents)->ShowCollectedCookies();
}
content::WebContents* web_contents =
browser()->tab_strip_model()->GetActiveWebContents();
TabDialogs::FromWebContents(web_contents)->ShowCollectedCookies();
}
// If this crashes on Windows, use http://crbug.com/79331
IN_PROC_BROWSER_TEST_F(CollectedCookiesTest, NavigateAway) {
ASSERT_TRUE(embedded_test_server()->Start());
private:
DISALLOW_COPY_AND_ASSIGN(CollectedCookiesTest);
};
// Disable cookies.
CookieSettingsFactory::GetForProfile(browser()->profile())
->SetDefaultCookieSetting(CONTENT_SETTING_BLOCK);
// Runs with --secondary-ui-md. Users of this can switch to CollectedCookiesTest
// when that is the default.
class CollectedCookiesTestMd : public CollectedCookiesTest {
public:
CollectedCookiesTestMd() {}
// Load a page with cookies.
ui_test_utils::NavigateToURL(
browser(), embedded_test_server()->GetURL("/cookie1.html"));
// content::BrowserTestBase:
void SetUpCommandLine(base::CommandLine* command_line) override {
command_line->AppendSwitch(switches::kExtendMdToSecondaryUi);
}
// Click on the info link.
private:
DISALLOW_COPY_AND_ASSIGN(CollectedCookiesTestMd);
};
// Test that calls ShowDialog("default"). Interactive when run via
// browser_tests --gtest_filter=BrowserDialogTest.Invoke --interactive
// --dialog=CollectedCookiesTestMd.InvokeDialog_default
IN_PROC_BROWSER_TEST_F(CollectedCookiesTestMd, InvokeDialog_default) {
RunDialog();
}
// If this crashes on Windows, use http://crbug.com/79331
IN_PROC_BROWSER_TEST_F(CollectedCookiesTest, DoubleDisplay) {
ShowDialog(std::string());
// Click on the info link a second time.
content::WebContents* web_contents =
browser()->tab_strip_model()->GetActiveWebContents();
TabDialogs::FromWebContents(web_contents)->ShowCollectedCookies();
}
// If this crashes on Windows, use http://crbug.com/79331
IN_PROC_BROWSER_TEST_F(CollectedCookiesTest, NavigateAway) {
ShowDialog(std::string());
// Navigate to another page.
ui_test_utils::NavigateToURL(
......
......@@ -1338,7 +1338,6 @@ test("browser_tests") {
"../browser/chrome_security_exploit_browsertest.cc",
"../browser/chrome_site_per_process_browsertest.cc",
"../browser/chrome_switches_browsertest.cc",
"../browser/collected_cookies_browsertest.cc",
"../browser/content_settings/content_settings_browsertest.cc",
"../browser/crash_recovery_browsertest.cc",
"../browser/custom_handlers/protocol_handler_registry_browsertest.cc",
......@@ -1751,6 +1750,7 @@ test("browser_tests") {
"../browser/ui/browser_navigator_browsertest.h",
"../browser/ui/browser_navigator_browsertest_chromeos.cc",
"../browser/ui/browser_tabrestore_browsertest.cc",
"../browser/ui/collected_cookies_browsertest.cc",
"../browser/ui/content_settings/content_setting_bubble_model_browsertest.cc",
"../browser/ui/content_settings/content_setting_image_model_browsertest.cc",
"../browser/ui/exclusive_access/fullscreen_controller_browsertest.cc",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment