Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1584)

Side by Side Diff: chrome/browser/ui/cocoa/global_error_bubble_controller.mm

Issue 2586373003: MacViews: Allow toolkit-views for "Global Error" bubbles. (Closed)
Patch Set: addObserverForName Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "chrome/browser/ui/cocoa/global_error_bubble_controller.h" 5 #import "chrome/browser/ui/cocoa/global_error_bubble_controller.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/mac/scoped_nsobject.h" 8 #include "base/mac/scoped_nsobject.h"
9 #include "base/strings/string_util.h" 9 #include "base/strings/string_util.h"
10 #include "base/strings/sys_string_conversions.h" 10 #include "base/strings/sys_string_conversions.h"
11 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
12 #import "chrome/browser/ui/browser.h" 12 #import "chrome/browser/ui/browser.h"
13 #import "chrome/browser/ui/browser_window.h" 13 #import "chrome/browser/ui/browser_window.h"
14 #import "chrome/browser/ui/cocoa/app_menu/app_menu_controller.h" 14 #import "chrome/browser/ui/cocoa/app_menu/app_menu_controller.h"
15 #import "chrome/browser/ui/cocoa/browser_window_controller.h" 15 #import "chrome/browser/ui/cocoa/browser_window_controller.h"
16 #import "chrome/browser/ui/cocoa/info_bubble_view.h" 16 #import "chrome/browser/ui/cocoa/info_bubble_view.h"
17 #import "chrome/browser/ui/cocoa/l10n_util.h" 17 #import "chrome/browser/ui/cocoa/l10n_util.h"
18 #import "chrome/browser/ui/cocoa/toolbar/toolbar_controller.h" 18 #import "chrome/browser/ui/cocoa/toolbar/toolbar_controller.h"
19 #include "chrome/browser/ui/global_error/global_error.h" 19 #include "chrome/browser/ui/global_error/global_error.h"
20 #include "chrome/browser/ui/global_error/global_error_bubble_view_base.h" 20 #include "chrome/browser/ui/global_error/global_error_bubble_view_base.h"
21 #include "chrome/browser/ui/global_error/global_error_service.h" 21 #include "chrome/browser/ui/global_error/global_error_service.h"
22 #include "chrome/browser/ui/global_error/global_error_service_factory.h" 22 #include "chrome/browser/ui/global_error/global_error_service_factory.h"
23 #include "components/search_engines/util.h" 23 #include "components/search_engines/util.h"
24 #import "third_party/google_toolbox_for_mac/src/AppKit/GTMUILocalizerAndLayoutTw eaker.h" 24 #import "third_party/google_toolbox_for_mac/src/AppKit/GTMUILocalizerAndLayoutTw eaker.h"
25 #import "ui/base/cocoa/a11y_util.h" 25 #import "ui/base/cocoa/a11y_util.h"
26 #include "ui/base/l10n/l10n_util.h" 26 #include "ui/base/l10n/l10n_util.h"
27 #include "ui/base/material_design/material_design_controller.h"
27 #include "ui/gfx/image/image.h" 28 #include "ui/gfx/image/image.h"
28 29
29 namespace { 30 namespace {
31
30 const CGFloat kParagraphSpacing = 6; 32 const CGFloat kParagraphSpacing = 6;
33
34 ToolbarController* ToolbarControllerForBrowser(Browser* browser) {
35 NSWindow* parent_window = browser->window()->GetNativeWindow();
36 BrowserWindowController* bwc =
37 [BrowserWindowController browserWindowControllerForWindow:parent_window];
38 return [bwc toolbarController];
39 }
40
31 } // namespace 41 } // namespace
32 42
33 namespace GlobalErrorBubbleControllerInternal { 43 namespace GlobalErrorBubbleControllerInternal {
34 44
35 // This is the bridge to the C++ GlobalErrorBubbleViewBase object. 45 // This is the bridge to the C++ GlobalErrorBubbleViewBase object.
36 class Bridge : public GlobalErrorBubbleViewBase { 46 class Bridge : public GlobalErrorBubbleViewBase {
37 public: 47 public:
38 Bridge(GlobalErrorBubbleController* controller) : controller_(controller) { 48 Bridge(GlobalErrorBubbleController* controller) : controller_(controller) {
39 } 49 }
40 50
41 private: 51 private:
42 void CloseBubbleView() override { [controller_ close]; } 52 void CloseBubbleView() override { [controller_ close]; }
43 53
44 GlobalErrorBubbleController* controller_; // Weak, owns this. 54 GlobalErrorBubbleController* controller_; // Weak, owns this.
45 }; 55 };
46 56
47 } // namespace GlobalErrorBubbleControllerInternal 57 } // namespace GlobalErrorBubbleControllerInternal
48 58
49 @implementation GlobalErrorBubbleController 59 @implementation GlobalErrorBubbleController
50 60
51 + (GlobalErrorBubbleViewBase*)showForBrowser:(Browser*)browser 61 + (GlobalErrorBubbleViewBase*)showForBrowser:(Browser*)browser
52 error:(const base::WeakPtr<GlobalErrorWithStandardBubble>&)error { 62 error:(const base::WeakPtr<GlobalErrorWithStandardBubble>&)error {
53 NSWindow* parentWindow = browser->window()->GetNativeWindow(); 63 NSView* appMenuButton = [ToolbarControllerForBrowser(browser) appMenuButton];
54 BrowserWindowController* bwc = [BrowserWindowController
55 browserWindowControllerForWindow:parentWindow];
56 NSView* appMenuButton = [[bwc toolbarController] appMenuButton];
57 NSPoint offset = NSMakePoint( 64 NSPoint offset = NSMakePoint(
58 NSMidX([appMenuButton bounds]), 65 NSMidX([appMenuButton bounds]),
59 app_menu_controller::kAppMenuBubblePointOffsetY); 66 app_menu_controller::kAppMenuBubblePointOffsetY);
60 67
61 // The bubble will be automatically deleted when the window is closed. 68 // The bubble will be automatically deleted when the window is closed.
62 GlobalErrorBubbleController* bubble = [[GlobalErrorBubbleController alloc] 69 GlobalErrorBubbleController* bubble = [[GlobalErrorBubbleController alloc]
63 initWithWindowNibPath:@"GlobalErrorBubble" 70 initWithWindowNibPath:@"GlobalErrorBubble"
64 relativeToView:appMenuButton 71 relativeToView:appMenuButton
65 offset:offset]; 72 offset:offset];
66 bubble->error_ = error; 73 bubble->error_ = error;
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 if (error_) 164 if (error_)
158 error_->BubbleViewCancelButtonPressed(browser_); 165 error_->BubbleViewCancelButtonPressed(browser_);
159 [self close]; 166 [self close];
160 } 167 }
161 168
162 @end 169 @end
163 170
164 GlobalErrorBubbleViewBase* GlobalErrorBubbleViewBase::ShowStandardBubbleView( 171 GlobalErrorBubbleViewBase* GlobalErrorBubbleViewBase::ShowStandardBubbleView(
165 Browser* browser, 172 Browser* browser,
166 const base::WeakPtr<GlobalErrorWithStandardBubble>& error) { 173 const base::WeakPtr<GlobalErrorWithStandardBubble>& error) {
167 return [GlobalErrorBubbleController showForBrowser:browser error:error]; 174 if (!ui::MaterialDesignController::IsSecondaryUiMaterial())
175 return [GlobalErrorBubbleController showForBrowser:browser error:error];
176
177 NSPoint ns_point = [ToolbarControllerForBrowser(browser) appMenuBubblePoint];
178 return ShowViewsGlobalErrorBubbleOnCocoaBrowser(ns_point, browser, error);
168 } 179 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698