blob: 2dfa6e0c6826a542f745bdf5581ed41e31abc408 [file] [log] [blame]
// Copyright 2016 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/platform_util.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_window.h"
#import "chrome/browser/ui/cocoa/global_error_bubble_controller.h"
#include "chrome/browser/ui/views/global_error_bubble_view.h"
#import "chrome/browser/ui/cocoa/bubble_anchor_helper_views.h"
#import "ui/base/cocoa/cocoa_base_utils.h"
#import "ui/gfx/mac/coordinate_conversion.h"
GlobalErrorBubbleViewBase* ShowViewsGlobalErrorBubbleOnCocoaBrowser(
NSPoint anchor,
Browser* browser,
const base::WeakPtr<GlobalErrorWithStandardBubble>& error) {
gfx::Point anchor_point =
gfx::ScreenPointFromNSPoint(ui::ConvertPointFromWindowToScreen(
browser->window()->GetNativeWindow(), anchor));
gfx::NativeView parent =
platform_util::GetViewForWindow(browser->window()->GetNativeWindow());
DCHECK(parent);
GlobalErrorBubbleView* bubble_view =
new GlobalErrorBubbleView(nullptr, gfx::Rect(anchor_point, gfx::Size()),
views::BubbleBorder::TOP_RIGHT, browser, error);
bubble_view->set_parent_window(parent);
views::BubbleDialogDelegateView::CreateBubble(bubble_view);
bubble_view->GetWidget()->Show();
KeepBubbleAnchored(bubble_view);
return bubble_view;
}