| Index: chrome/browser/ui/cocoa/tab_contents/overlayable_contents_controller_browsertest.mm
|
| diff --git a/chrome/browser/ui/cocoa/tab_contents/overlayable_contents_controller_browsertest.mm b/chrome/browser/ui/cocoa/tab_contents/overlayable_contents_controller_browsertest.mm
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9cb173b7de59707d4d7db1c3625f82cfbc3caaae
|
| --- /dev/null
|
| +++ b/chrome/browser/ui/cocoa/tab_contents/overlayable_contents_controller_browsertest.mm
|
| @@ -0,0 +1,121 @@
|
| +// Copyright 2012 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.
|
| +
|
| +#import "chrome/browser/ui/cocoa/tab_contents/overlayable_contents_controller.h"
|
| +
|
| +#include "chrome/browser/instant/instant_model.h"
|
| +#include "chrome/browser/profiles/profile.h"
|
| +#include "chrome/browser/ui/browser.h"
|
| +#include "chrome/browser/ui/browser_window.h"
|
| +#include "chrome/browser/ui/cocoa/browser_window_controller.h"
|
| +#include "chrome/browser/ui/cocoa/tab_contents/overlay_drop_shadow_view.h"
|
| +#include "chrome/test/base/in_process_browser_test.h"
|
| +#include "content/public/browser/web_contents.h"
|
| +#include "content/public/browser/web_contents_view.h"
|
| +#import "testing/gtest_mac.h"
|
| +
|
| +class OverlayableContentsControllerTest : public InProcessBrowserTest {
|
| + public:
|
| + OverlayableContentsControllerTest() {
|
| + }
|
| +
|
| + virtual void SetUpOnMainThread() OVERRIDE {
|
| + web_contents_.reset(content::WebContents::Create(
|
| + content::WebContents::CreateParams(browser()->profile())));
|
| + controller_.reset([[OverlayableContentsController alloc]
|
| + initWithBrowser:browser()
|
| + windowController:nil]);
|
| + [[controller_ view] setFrame:NSMakeRect(0, 0, 100, 200)];
|
| + instant_model_.AddObserver([controller_ instantOverlayController]);
|
| + }
|
| +
|
| + virtual void CleanUpOnMainThread() OVERRIDE {
|
| + instant_model_.RemoveObserver([controller_ instantOverlayController]);
|
| + controller_.reset();
|
| + web_contents_.reset();
|
| + }
|
| +
|
| + void VerifyOverlayFrame(CGFloat expected_height, BOOL is_height_in_pixels) {
|
| + NSRect container_bounds = [[controller_ view] bounds];
|
| + NSRect overlay_frame = [web_contents_->GetView()->GetNativeView() frame];
|
| +
|
| + EXPECT_EQ(NSMinX(container_bounds), NSMinX(overlay_frame));
|
| + EXPECT_EQ(NSWidth(container_bounds), NSWidth(overlay_frame));
|
| + if (is_height_in_pixels) {
|
| + EXPECT_EQ(expected_height, NSHeight(overlay_frame));
|
| + EXPECT_EQ(NSMaxY(container_bounds), NSMaxY(overlay_frame));
|
| + } else {
|
| + EXPECT_EQ((expected_height * NSHeight(container_bounds)) / 100,
|
| + NSHeight(overlay_frame));
|
| + EXPECT_EQ(NSMaxY(container_bounds), NSMaxY(overlay_frame));
|
| + }
|
| + }
|
| +
|
| + protected:
|
| + InstantModel instant_model_;
|
| + scoped_ptr<content::WebContents> web_contents_;
|
| + scoped_nsobject<OverlayableContentsController> controller_;
|
| +};
|
| +
|
| +// Verify that the view is correctly laid out when size is specified in percent.
|
| +IN_PROC_BROWSER_TEST_F(OverlayableContentsControllerTest, SizePerecent) {
|
| + CGFloat expected_height = 30;
|
| + BOOL is_height_in_pixels = NO;
|
| + instant_model_.SetOverlayState(
|
| + web_contents_.get(), expected_height, is_height_in_pixels);
|
| +
|
| + EXPECT_NSEQ([web_contents_->GetView()->GetNativeView() superview],
|
| + [controller_ view]);
|
| + VerifyOverlayFrame(expected_height, is_height_in_pixels);
|
| +
|
| + // Resize the view and verify that the overlay is also resized.
|
| + [[controller_ view] setFrameSize:NSMakeSize(300, 400)];
|
| + VerifyOverlayFrame(expected_height, is_height_in_pixels);
|
| +}
|
| +
|
| +// Verify that the view is correctly laid out when size is specified in pixels.
|
| +IN_PROC_BROWSER_TEST_F(OverlayableContentsControllerTest, SizePixels) {
|
| + CGFloat expected_height = 30;
|
| + BOOL is_height_in_pixels = YES;
|
| + instant_model_.SetOverlayState(
|
| + web_contents_.get(), expected_height, is_height_in_pixels);
|
| +
|
| + EXPECT_NSEQ([web_contents_->GetView()->GetNativeView() superview],
|
| + [controller_ view]);
|
| + VerifyOverlayFrame(expected_height, is_height_in_pixels);
|
| +
|
| + // Resize the view and verify that the overlay is also resized.
|
| + [[controller_ view] setFrameSize:NSMakeSize(300, 400)];
|
| + VerifyOverlayFrame(expected_height, is_height_in_pixels);
|
| +}
|
| +
|
| +// Verify that a shadow is not shown when the overlay covers the entire page.
|
| +IN_PROC_BROWSER_TEST_F(OverlayableContentsControllerTest, NoShadowFullHeight) {
|
| + instant_model_.SetOverlayState(web_contents_.get(), 100, NO);
|
| + EXPECT_FALSE([controller_ dropShadowView]);
|
| + EXPECT_FALSE([controller_ drawDropShadow]);
|
| +}
|
| +
|
| +// Verify that a shadow is shown when the overlay is in search mode.
|
| +IN_PROC_BROWSER_TEST_F(OverlayableContentsControllerTest, ShadowInSearch) {
|
| + instant_model_.SetOverlayState(web_contents_.get(), mode, 10, NO);
|
| + EXPECT_TRUE([controller_ dropShadowView]);
|
| + EXPECT_TRUE([controller_ drawDropShadow]);
|
| + EXPECT_NSEQ([controller_ view], [[controller_ dropShadowView] superview]);
|
| +
|
| + NSRect dropShadowFrame = [[controller_ dropShadowView] frame];
|
| + NSRect controllerBounds = [[controller_ view] bounds];
|
| + EXPECT_EQ(NSWidth(controllerBounds), NSWidth(dropShadowFrame));
|
| + EXPECT_EQ([OverlayDropShadowView preferredHeight],
|
| + NSHeight(dropShadowFrame));
|
| +}
|
| +
|
| +// Verify that the shadow is hidden when hiding the overlay.
|
| +IN_PROC_BROWSER_TEST_F(OverlayableContentsControllerTest, HideShadow) {
|
| + instant_model_.SetOverlayState(web_contents_.get(), mode, 10, NO);
|
| + EXPECT_TRUE([controller_ dropShadowView]);
|
| +
|
| + [controller_ onActivateTabWithContents:web_contents_.get()];
|
| + EXPECT_FALSE([controller_ dropShadowView]);
|
| +}
|
|
|