Commit ffed5cfe authored by Elly Fong-Jones's avatar Elly Fong-Jones Committed by Commit Bot

polychrome: use proper TabDialogs implementation

This change causes polychrome builds to use TabDialogsViewsMac or
TabDialogsViews as appropriate, instead of TabDialogsViews in all cases. This
fixes a bunch of browser tests.

Bug: 817408
Change-Id: I1f3f43411856bfc70232e969ce3afaa484a52ee3
Reviewed-on: https://chromium-review.googlesource.com/960682
Commit-Queue: Elly Fong-Jones <ellyjones@chromium.org>
Reviewed-by: default avatarTrent Apted <tapted@chromium.org>
Cr-Commit-Position: refs/heads/master@{#543356}
parent c780f2fd
......@@ -2525,8 +2525,6 @@ split_static_library("ui") {
"cocoa/simple_message_box_bridge_views.mm",
"cocoa/simple_message_box_cocoa.h",
"cocoa/simple_message_box_cocoa.mm",
"cocoa/tab_dialogs_cocoa.h",
"cocoa/tab_dialogs_cocoa.mm",
"javascript_dialogs/javascript_dialog_cocoa.h",
"javascript_dialogs/javascript_dialog_cocoa.mm",
"javascript_dialogs/javascript_dialog_mac.cc",
......
......@@ -14,7 +14,9 @@
#include "chrome/browser/ui/cocoa/tab_dialogs_views_mac.h"
#include "chrome/browser/ui/sync/profile_signin_confirmation_helper.h"
#include "content/public/browser/web_contents.h"
#include "ui/base/ui_features.h"
#if !BUILDFLAG(MAC_VIEWS_BROWSER)
// static
void TabDialogs::CreateForWebContents(content::WebContents* contents) {
DCHECK(contents);
......@@ -27,6 +29,7 @@ void TabDialogs::CreateForWebContents(content::WebContents* contents) {
contents->SetUserData(UserDataKey(), std::move(tab_dialogs));
}
}
#endif
TabDialogsCocoa::TabDialogsCocoa(content::WebContents* contents)
: web_contents_(contents) {
......
......@@ -15,8 +15,11 @@
#include "chrome/browser/ui/views/collected_cookies_views.h"
#include "chrome/browser/ui/views/passwords/password_bubble_view_base.h"
#include "chrome/browser/ui/views/sync/profile_signin_confirmation_dialog_views.h"
#include "chrome/browser/ui/views/tab_dialogs_views.h"
#include "chrome/browser/ui/views_mode_controller.h"
#include "content/public/browser/web_contents.h"
#import "ui/base/cocoa/cocoa_base_utils.h"
#include "ui/base/ui_features.h"
#import "ui/gfx/mac/coordinate_conversion.h"
namespace {
......@@ -27,6 +30,32 @@ gfx::Point ScreenPointFromBrowser(Browser* browser, NSPoint ns_point) {
}
}
#if BUILDFLAG(MAC_VIEWS_BROWSER)
// static
void TabDialogs::CreateForWebContents(content::WebContents* contents) {
DCHECK(contents);
if (!FromWebContents(contents)) {
// This is a bit subtle: if IsViewsBrowserCocoa(), that means this is a
// mac_views_browser build using a Cocoa browser window, in which case
// TabDialogsViewsMac is the right implementation; mostly it inherits
// behavior from TabDialogsCocoa, which will only work with a Cocoa browser
// window. If !IsViewsBrowserCocoa(), there is a Views browser window, so
// TabDialogsViews (which is the only implementation that works with a Views
// browser window) is the right implementation.
//
// Note that the ternary below can't use std::make_unique<> because
// TabDialogsViewsMac and TabDialogsViews are not compatible types (neither
// is an ancestor of the other).
std::unique_ptr<TabDialogs> tab_dialogs(
views_mode_controller::IsViewsBrowserCocoa()
? static_cast<TabDialogs*>(new TabDialogsViewsMac(contents))
: static_cast<TabDialogs*>(new TabDialogsViews(contents)));
contents->SetUserData(UserDataKey(), std::move(tab_dialogs));
}
}
#endif
TabDialogsViewsMac::TabDialogsViewsMac(content::WebContents* contents)
: TabDialogsCocoa(contents) {}
......
......@@ -6,6 +6,7 @@
#include <memory>
#include "build/build_config.h"
#include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h"
#include "chrome/browser/ui/views/collected_cookies_views.h"
#include "chrome/browser/ui/views/hung_renderer_view.h"
......@@ -16,6 +17,7 @@
#include "chrome/browser/ui/views/sync/profile_signin_confirmation_dialog_views.h"
#endif
#if !defined(OS_MACOSX)
// static
void TabDialogs::CreateForWebContents(content::WebContents* contents) {
DCHECK(contents);
......@@ -24,6 +26,7 @@ void TabDialogs::CreateForWebContents(content::WebContents* contents) {
std::make_unique<TabDialogsViews>(contents));
}
}
#endif
TabDialogsViews::TabDialogsViews(content::WebContents* contents)
: web_contents_(contents) {
......
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