Home | History | Annotate | Download | only in ash
      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 
     15 typedef InProcessBrowserTest ShelfBrowserTest;
     16 
     17 // Confirm that a status bubble doesn't cause the shelf to darken.
     18 IN_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