172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
24a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
34a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// found in the LICENSE file.
44a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
54a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#ifndef CHROME_BROWSER_UI_VIEWS_FIRST_RUN_BUBBLE_H_
64a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#define CHROME_BROWSER_UI_VIEWS_FIRST_RUN_BUBBLE_H_
74a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#pragma once
84a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
94a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "base/compiler_specific.h"
104a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "base/task.h"
114a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "chrome/browser/first_run/first_run.h"
12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/ui/views/bubble/bubble.h"
134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass FirstRunBubbleViewBase;
154a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass Profile;
164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass FirstRunBubble : public Bubble,
18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                       public BubbleDelegate {
194a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch public:
204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  static FirstRunBubble* Show(Profile* profile, views::Widget* parent,
214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                              const gfx::Rect& position_relative_to,
224a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                              BubbleBorder::ArrowLocation arrow_location,
234a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                              FirstRun::BubbleType bubble_type);
244a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch private:
264a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  FirstRunBubble();
274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual ~FirstRunBubble();
284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
294a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  void set_view(FirstRunBubbleViewBase* view) { view_ = view; }
304a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
314a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // Re-enable the parent window.
324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  void EnableParent();
334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#if defined(OS_WIN)
35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Overridden from Bubble:
364a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual void OnActivate(UINT action, BOOL minimized, HWND window);
374a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#endif
384a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // BubbleDelegate.
40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void BubbleClosing(Bubble* bubble, bool closed_by_escape);
414a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual bool CloseOnEscape() { return true; }
424a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual bool FadeInOnShow() { return true; }
434a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
444a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // Whether we have already been activated.
454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  bool has_been_activated_;
464a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
474a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  ScopedRunnableMethodFactory<FirstRunBubble> enable_window_method_factory_;
484a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
494a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // The view inside the FirstRunBubble.
504a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  FirstRunBubbleViewBase* view_;
514a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
524a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  DISALLOW_COPY_AND_ASSIGN(FirstRunBubble);
534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch};
544a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
554a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#endif  // CHROME_BROWSER_UI_VIEWS_FIRST_RUN_BUBBLE_H_
56