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