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

Side by Side Diff: chrome/browser/ui/cocoa/extensions/extension_message_bubble_views_browsertest_mac.mm

Issue 2630473003: MacViews: Harmony for toolbar actions bubbles. (Closed)
Patch Set: respond to comments Created 3 years, 9 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
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #import <Cocoa/Cocoa.h>
6
7 #include "chrome/browser/ui/browser_window.h"
8 #import "chrome/browser/ui/cocoa/browser_window_controller.h"
9 #import "chrome/browser/ui/cocoa/extensions/browser_action_button.h"
10 #import "chrome/browser/ui/cocoa/extensions/browser_actions_controller.h"
11 #import "chrome/browser/ui/cocoa/extensions/toolbar_actions_bar_bubble_views_pre senter.h"
12 #import "chrome/browser/ui/cocoa/toolbar/toolbar_controller.h"
13 #include "chrome/browser/ui/extensions/extension_message_bubble_browsertest.h"
14 #include "chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.h"
15 #import "ui/gfx/mac/coordinate_conversion.h"
16
17 namespace {
18
19 // Returns the ToolbarController for the given browser.
20 ToolbarController* ToolbarControllerForBrowser(Browser* browser) {
21 return [[BrowserWindowController
22 browserWindowControllerForWindow:browser->window()->GetNativeWindow()]
23 toolbarController];
24 }
25
26 } // namespace
27
28 @interface BrowserActionsController (ViewsTestingAPI)
29 - (ToolbarActionsBarBubbleViewsPresenter*)presenter;
30 @end
31
32 @implementation BrowserActionsController (ViewsTestingAPI)
33 - (ToolbarActionsBarBubbleViewsPresenter*)presenter {
34 return viewsBubblePresenter_.get();
35 }
36 @end
37
38 namespace test {
39
40 class ToolbarActionsBarBubbleViewsPresenterTestApi {
41 public:
42 static ToolbarActionsBarBubbleViews* GetBubble(
43 ToolbarActionsBarBubbleViewsPresenter* presenter) {
44 return presenter->active_bubble_;
45 }
46 };
47
48 } // namespace test
49
50 // static
51 ToolbarActionsBarBubbleViews*
52 ExtensionMessageBubbleBrowserTest::GetViewsBubbleForBrowser(Browser* browser) {
53 ToolbarController* toolbarController = ToolbarControllerForBrowser(browser);
54 BrowserActionsController* actionsController =
55 [toolbarController browserActionsController];
56 return test::ToolbarActionsBarBubbleViewsPresenterTestApi::GetBubble(
57 [actionsController presenter]);
58 }
59
60 // static
61 gfx::Rect ExtensionMessageBubbleBrowserTest::GetAnchorReferenceBoundsForBrowser(
62 Browser* browser,
63 AnchorPosition anchor) {
64 ToolbarController* toolbarController = ToolbarControllerForBrowser(browser);
65 BrowserActionsController* actionsController =
66 [toolbarController browserActionsController];
67 NSView* anchor_view = nil;
68 switch (anchor) {
69 case ExtensionMessageBubbleBrowserTest::ANCHOR_BROWSER_ACTION:
70 anchor_view = [actionsController buttonWithIndex:0];
71 break;
72 case ExtensionMessageBubbleBrowserTest::ANCHOR_APP_MENU:
73 anchor_view = [toolbarController appMenuButton];
74 break;
75 }
76 EXPECT_TRUE(anchor_view);
77 NSWindow* parent_window = [anchor_view window];
78
79 ToolbarActionsBarBubbleViews* bubble = GetViewsBubbleForBrowser(browser);
80 EXPECT_TRUE(bubble);
81 EXPECT_EQ([parent_window contentView], bubble->parent_window());
82
83 NSRect anchor_bounds_in_window =
84 [anchor_view convertRect:[anchor_view bounds] toView:nil];
85 NSRect reference_bounds_in_screen =
86 [parent_window convertRectToScreen:anchor_bounds_in_window];
87
88 return gfx::ScreenRectFromNSRect(reference_bounds_in_screen);
89 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698