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

Side by Side Diff: chrome/browser/ui/cocoa/tab_contents/overlayable_contents_controller_browsertest.mm

Issue 22694002: InstantExtended: Nuke InstantOverlayController. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase. Created 7 years, 4 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2012 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 "chrome/browser/ui/cocoa/tab_contents/overlayable_contents_controller.h"
6
7 #include "chrome/browser/profiles/profile.h"
8 #include "chrome/browser/ui/browser.h"
9 #include "chrome/browser/ui/browser_window.h"
10 #include "chrome/browser/ui/cocoa/tab_contents/instant_overlay_controller_mac.h"
11 #include "chrome/browser/ui/search/instant_overlay_model.h"
12 #include "chrome/test/base/in_process_browser_test.h"
13 #include "content/public/browser/notification_source.h"
14 #include "content/public/browser/web_contents.h"
15 #include "content/public/browser/web_contents_view.h"
16 #import "testing/gtest_mac.h"
17
18 class OverlayableContentsControllerTest : public InProcessBrowserTest,
19 public content::NotificationObserver {
20 public:
21 OverlayableContentsControllerTest() : instant_overlay_model_(NULL),
22 visibility_changed_count_(0) {
23 }
24
25 virtual void SetUpOnMainThread() OVERRIDE {
26 web_contents_.reset(content::WebContents::Create(
27 content::WebContents::CreateParams(browser()->profile())));
28 instant_overlay_model_.SetOverlayContents(web_contents_.get());
29
30 controller_.reset([[OverlayableContentsController alloc]
31 initWithBrowser:browser()]);
32 [[controller_ view] setFrame:NSMakeRect(0, 0, 100, 200)];
33 instant_overlay_model_.AddObserver([controller_ instantOverlayController]);
34 }
35
36 virtual void CleanUpOnMainThread() OVERRIDE {
37 instant_overlay_model_.RemoveObserver(
38 [controller_ instantOverlayController]);
39 instant_overlay_model_.SetOverlayContents(NULL);
40 controller_.reset();
41 web_contents_.reset();
42 }
43
44 void VerifyOverlayFrame(CGFloat expected_height,
45 InstantSizeUnits units) {
46 NSRect container_bounds = [[controller_ view] bounds];
47 NSRect overlay_frame =
48 [web_contents_->GetView()->GetNativeView() frame];
49
50 EXPECT_EQ(NSMinX(container_bounds), NSMinX(overlay_frame));
51 EXPECT_EQ(NSWidth(container_bounds), NSWidth(overlay_frame));
52 switch (units) {
53 case INSTANT_SIZE_PIXELS:
54 EXPECT_EQ(expected_height, NSHeight(overlay_frame));
55 EXPECT_EQ(NSMaxY(container_bounds), NSMaxY(overlay_frame));
56 break;
57 case INSTANT_SIZE_PERCENT:
58 EXPECT_EQ((expected_height * NSHeight(container_bounds)) / 100,
59 NSHeight(overlay_frame));
60 EXPECT_EQ(NSMaxY(container_bounds), NSMaxY(overlay_frame));
61 }
62 }
63
64 virtual void Observe(int type,
65 const content::NotificationSource& source,
66 const content::NotificationDetails& details) OVERRIDE {
67 if (type == content::NOTIFICATION_WEB_CONTENTS_VISIBILITY_CHANGED)
68 ++visibility_changed_count_;
69 }
70
71 protected:
72 InstantOverlayModel instant_overlay_model_;
73 scoped_ptr<content::WebContents> web_contents_;
74 base::scoped_nsobject<OverlayableContentsController> controller_;
75 content::NotificationRegistrar registrar_;
76 int visibility_changed_count_;
77 };
78
79 // Verify that the view is correctly laid out when size is specified in percent.
80 IN_PROC_BROWSER_TEST_F(OverlayableContentsControllerTest, SizePerecent) {
81 SearchMode mode;
82 mode.mode = SearchMode::MODE_NTP;
83 CGFloat expected_height = 30;
84 InstantSizeUnits units = INSTANT_SIZE_PERCENT;
85 instant_overlay_model_.SetOverlayState(mode, expected_height, units);
86
87 EXPECT_NSEQ([web_contents_->GetView()->GetNativeView() superview],
88 [controller_ view]);
89 VerifyOverlayFrame(expected_height, units);
90
91 // Resize the view and verify that the overlay is also resized.
92 [[controller_ view] setFrameSize:NSMakeSize(300, 400)];
93 VerifyOverlayFrame(expected_height, units);
94 }
95
96 // Verify that the view is correctly laid out when size is specified in pixels.
97 IN_PROC_BROWSER_TEST_F(OverlayableContentsControllerTest, SizePixels) {
98 SearchMode mode;
99 mode.mode = SearchMode::MODE_NTP;
100 CGFloat expected_height = 30;
101 InstantSizeUnits units = INSTANT_SIZE_PIXELS;
102 instant_overlay_model_.SetOverlayState(mode, expected_height, units);
103
104 EXPECT_NSEQ([web_contents_->GetView()->GetNativeView() superview],
105 [controller_ view]);
106 VerifyOverlayFrame(expected_height, units);
107
108 // Resize the view and verify that the overlay is also resized.
109 [[controller_ view] setFrameSize:NSMakeSize(300, 400)];
110 VerifyOverlayFrame(expected_height, units);
111 }
112
113 // Verify that the web contents is not hidden when just the height changes.
114 IN_PROC_BROWSER_TEST_F(OverlayableContentsControllerTest, HeightChangeNoHide) {
115 SearchMode mode;
116 mode.mode = SearchMode::MODE_SEARCH_SUGGESTIONS;
117 instant_overlay_model_.SetOverlayState(mode, 10, INSTANT_SIZE_PERCENT);
118
119 registrar_.Add(this,
120 content::NOTIFICATION_WEB_CONTENTS_VISIBILITY_CHANGED,
121 content::Source<content::WebContents>(web_contents_.get()));
122 EXPECT_EQ(0, visibility_changed_count_);
123 instant_overlay_model_.SetOverlayState(mode, 11, INSTANT_SIZE_PERCENT);
124 EXPECT_EQ(1, visibility_changed_count_);
125 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/tab_contents/overlayable_contents_controller.mm ('k') | chrome/browser/ui/gtk/browser_window_gtk.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698