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") { ...@@ -2905,6 +2905,8 @@ split_static_library("ui") {
"cocoa/tab_contents/tab_contents_controller.mm", "cocoa/tab_contents/tab_contents_controller.mm",
"cocoa/tab_dialogs_cocoa.h", "cocoa/tab_dialogs_cocoa.h",
"cocoa/tab_dialogs_cocoa.mm", "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.h",
"cocoa/tab_modal_confirm_dialog_mac.mm", "cocoa/tab_modal_confirm_dialog_mac.mm",
"cocoa/tabs/alert_indicator_button_cocoa.h", "cocoa/tabs/alert_indicator_button_cocoa.h",
......
...@@ -32,6 +32,9 @@ class TabDialogsCocoa : public TabDialogs { ...@@ -32,6 +32,9 @@ class TabDialogsCocoa : public TabDialogs {
const base::string16& main_text, const base::string16& main_text,
const base::string16& sub_text) override; const base::string16& sub_text) override;
protected:
content::WebContents* web_contents() const { return web_contents_; }
private: private:
content::WebContents* web_contents_; // Weak. Owns this. content::WebContents* web_contents_; // Weak. Owns this.
......
...@@ -9,14 +9,22 @@ ...@@ -9,14 +9,22 @@
#import "chrome/browser/ui/cocoa/hung_renderer_controller.h" #import "chrome/browser/ui/cocoa/hung_renderer_controller.h"
#import "chrome/browser/ui/cocoa/passwords/passwords_bubble_cocoa.h" #import "chrome/browser/ui/cocoa/passwords/passwords_bubble_cocoa.h"
#import "chrome/browser/ui/cocoa/profiles/profile_signin_confirmation_dialog_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" #import "chrome/browser/ui/cocoa/validation_message_bubble_cocoa.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
#include "ui/base/material_design/material_design_controller.h"
// static // static
void TabDialogs::CreateForWebContents(content::WebContents* contents) { void TabDialogs::CreateForWebContents(content::WebContents* contents) {
DCHECK(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) 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 @@ ...@@ -4,54 +4,80 @@
#include <string> #include <string>
#include "base/command_line.h"
#include "chrome/app/chrome_command_ids.h" #include "chrome/app/chrome_command_ids.h"
#include "chrome/browser/content_settings/cookie_settings_factory.h" #include "chrome/browser/content_settings/cookie_settings_factory.h"
#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/tab_dialogs.h" #include "chrome/browser/ui/tab_dialogs.h"
#include "chrome/browser/ui/tabs/tab_strip_model.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/common/url_constants.h"
#include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h" #include "chrome/test/base/ui_test_utils.h"
#include "components/content_settings/core/browser/cookie_settings.h" #include "components/content_settings/core/browser/cookie_settings.h"
#include "net/test/embedded_test_server/embedded_test_server.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 // TestDialogInterface:
IN_PROC_BROWSER_TEST_F(CollectedCookiesTest, DoubleDisplay) { void ShowDialog(const std::string& name) override {
ASSERT_TRUE(embedded_test_server()->Start()); ASSERT_TRUE(embedded_test_server()->Start());
// Disable cookies. // Disable cookies.
CookieSettingsFactory::GetForProfile(browser()->profile()) CookieSettingsFactory::GetForProfile(browser()->profile())
->SetDefaultCookieSetting(CONTENT_SETTING_BLOCK); ->SetDefaultCookieSetting(CONTENT_SETTING_BLOCK);
// Load a page with cookies. // Load a page with cookies.
ui_test_utils::NavigateToURL( ui_test_utils::NavigateToURL(
browser(), embedded_test_server()->GetURL("/cookie1.html")); browser(), embedded_test_server()->GetURL("/cookie1.html"));
// Click on the info link twice. content::WebContents* web_contents =
content::WebContents* web_contents = browser()->tab_strip_model()->GetActiveWebContents();
browser()->tab_strip_model()->GetActiveWebContents(); TabDialogs::FromWebContents(web_contents)->ShowCollectedCookies();
TabDialogs::FromWebContents(web_contents)->ShowCollectedCookies(); }
TabDialogs::FromWebContents(web_contents)->ShowCollectedCookies();
}
// If this crashes on Windows, use http://crbug.com/79331 private:
IN_PROC_BROWSER_TEST_F(CollectedCookiesTest, NavigateAway) { DISALLOW_COPY_AND_ASSIGN(CollectedCookiesTest);
ASSERT_TRUE(embedded_test_server()->Start()); };
// Disable cookies. // Runs with --secondary-ui-md. Users of this can switch to CollectedCookiesTest
CookieSettingsFactory::GetForProfile(browser()->profile()) // when that is the default.
->SetDefaultCookieSetting(CONTENT_SETTING_BLOCK); class CollectedCookiesTestMd : public CollectedCookiesTest {
public:
CollectedCookiesTestMd() {}
// Load a page with cookies. // content::BrowserTestBase:
ui_test_utils::NavigateToURL( void SetUpCommandLine(base::CommandLine* command_line) override {
browser(), embedded_test_server()->GetURL("/cookie1.html")); 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 = content::WebContents* web_contents =
browser()->tab_strip_model()->GetActiveWebContents(); browser()->tab_strip_model()->GetActiveWebContents();
TabDialogs::FromWebContents(web_contents)->ShowCollectedCookies(); 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. // Navigate to another page.
ui_test_utils::NavigateToURL( ui_test_utils::NavigateToURL(
......
...@@ -1338,7 +1338,6 @@ test("browser_tests") { ...@@ -1338,7 +1338,6 @@ test("browser_tests") {
"../browser/chrome_security_exploit_browsertest.cc", "../browser/chrome_security_exploit_browsertest.cc",
"../browser/chrome_site_per_process_browsertest.cc", "../browser/chrome_site_per_process_browsertest.cc",
"../browser/chrome_switches_browsertest.cc", "../browser/chrome_switches_browsertest.cc",
"../browser/collected_cookies_browsertest.cc",
"../browser/content_settings/content_settings_browsertest.cc", "../browser/content_settings/content_settings_browsertest.cc",
"../browser/crash_recovery_browsertest.cc", "../browser/crash_recovery_browsertest.cc",
"../browser/custom_handlers/protocol_handler_registry_browsertest.cc", "../browser/custom_handlers/protocol_handler_registry_browsertest.cc",
...@@ -1751,6 +1750,7 @@ test("browser_tests") { ...@@ -1751,6 +1750,7 @@ test("browser_tests") {
"../browser/ui/browser_navigator_browsertest.h", "../browser/ui/browser_navigator_browsertest.h",
"../browser/ui/browser_navigator_browsertest_chromeos.cc", "../browser/ui/browser_navigator_browsertest_chromeos.cc",
"../browser/ui/browser_tabrestore_browsertest.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_bubble_model_browsertest.cc",
"../browser/ui/content_settings/content_setting_image_model_browsertest.cc", "../browser/ui/content_settings/content_setting_image_model_browsertest.cc",
"../browser/ui/exclusive_access/fullscreen_controller_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