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
3// found in the LICENSE file.
4
5#include "ash/root_window_controller.h"
6#include "ash/shelf/shelf_layout_manager.h"
7#include "ash/shell.h"
8#include "ash/wm/workspace_controller.h"
9#include "base/strings/utf_string_conversions.h"
10#include "chrome/browser/ui/browser.h"
11#include "chrome/browser/ui/browser_window.h"
12#include "chrome/browser/ui/status_bubble.h"
13#include "chrome/test/base/in_process_browser_test.h"
14
15typedef InProcessBrowserTest ShelfBrowserTest;
16
17// Confirm that a status bubble doesn't cause the shelf to darken.
18IN_PROC_BROWSER_TEST_F(ShelfBrowserTest, StatusBubble) {
19  ash::ShelfLayoutManager* shelf =
20      ash::RootWindowController::ForShelf(
21          browser()->window()->GetNativeWindow())->GetShelfLayoutManager();
22  EXPECT_TRUE(shelf->IsVisible());
23
24  // Ensure that the browser abuts the shelf.
25  const gfx::Rect old_bounds = browser()->window()->GetBounds();
26  const gfx::Rect new_bounds(
27      old_bounds.x(),
28      old_bounds.y(),
29      old_bounds.width(),
30      shelf->GetIdealBounds().y() - old_bounds.y());
31  browser()->window()->SetBounds(new_bounds);
32  EXPECT_FALSE(shelf->window_overlaps_shelf());
33
34  // Show status, which will overlap the shelf by a pixel.
35  browser()->window()->GetStatusBubble()->SetStatus(
36      base::UTF8ToUTF16("Dummy Status Text"));
37  shelf->UpdateVisibilityState();
38
39  // Ensure that status doesn't cause overlap.
40  EXPECT_FALSE(shelf->window_overlaps_shelf());
41}
42