1// Copyright 2013 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 "chrome/browser/chromeos/first_run/steps/tray_step.h" 6 7#include "ash/first_run/first_run_helper.h" 8#include "ash/shell.h" 9#include "base/i18n/rtl.h" 10#include "chrome/browser/chromeos/first_run/step_names.h" 11#include "chrome/browser/ui/webui/chromeos/first_run/first_run_actor.h" 12#include "ui/gfx/rect.h" 13#include "ui/gfx/size.h" 14 15namespace chromeos { 16namespace first_run { 17 18TrayStep::TrayStep(ash::FirstRunHelper* shell_helper, FirstRunActor* actor) 19 : Step(kTrayStep, shell_helper, actor) { 20} 21 22void TrayStep::DoShow() { 23 if (!shell_helper()->IsTrayBubbleOpened()) 24 shell_helper()->OpenTrayBubble(); 25 gfx::Rect bounds = shell_helper()->GetTrayBubbleBounds(); 26 actor()->AddRectangularHole(bounds.x(), bounds.y(), bounds.width(), 27 bounds.height()); 28 FirstRunActor::StepPosition position; 29 position.SetTop(bounds.y()); 30 ash::Shell* shell = ash::Shell::GetInstance(); 31 ash::ShelfAlignment alignment = 32 shell->GetShelfAlignment(shell->GetPrimaryRootWindow()); 33 if ((!base::i18n::IsRTL() && alignment != ash::SHELF_ALIGNMENT_LEFT) || 34 alignment == ash::SHELF_ALIGNMENT_RIGHT) 35 position.SetRight(GetOverlaySize().width() - bounds.x()); 36 else 37 position.SetLeft(bounds.right()); 38 actor()->ShowStepPositioned(name(), position); 39} 40 41} // namespace first_run 42} // namespace chromeos 43 44