15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/root_window_controller.h"
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/shelf/shelf_layout_manager.h"
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/shell.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/wm/workspace_controller.h"
9868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_window.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/status_bubble.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/in_process_browser_test.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef InProcessBrowserTest ShelfBrowserTest;
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Confirm that a status bubble doesn't cause the shelf to darken.
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ShelfBrowserTest, StatusBubble) {
19c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  ash::ShelfLayoutManager* shelf =
20c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch      ash::RootWindowController::ForShelf(
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          browser()->window()->GetNativeWindow())->GetShelfLayoutManager();
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(shelf->IsVisible());
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Ensure that the browser abuts the shelf.
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const gfx::Rect old_bounds = browser()->window()->GetBounds();
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const gfx::Rect new_bounds(
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      old_bounds.x(),
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      old_bounds.y(),
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      old_bounds.width(),
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      shelf->GetIdealBounds().y() - old_bounds.y());
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  browser()->window()->SetBounds(new_bounds);
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(shelf->window_overlaps_shelf());
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Show status, which will overlap the shelf by a pixel.
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  browser()->window()->GetStatusBubble()->SetStatus(
365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      base::UTF8ToUTF16("Dummy Status Text"));
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  shelf->UpdateVisibilityState();
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Ensure that status doesn't cause overlap.
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(shelf->window_overlaps_shelf());
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
42