1d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)// found in the LICENSE file.
4d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)
5d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)#ifndef CHROME_BROWSER_CHROMEOS_CHARGER_REPLACE_CHARGER_REPLACEMENT_DIALOG_H_
6d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)#define CHROME_BROWSER_CHROMEOS_CHARGER_REPLACE_CHARGER_REPLACEMENT_DIALOG_H_
7d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)
8d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)#include "ui/gfx/native_widget_types.h"
9d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)#include "ui/web_dialogs/web_dialog_delegate.h"
10d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)
11d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)namespace chromeos {
12d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)
13d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)class ChargerReplacementHandler;
14d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)
15d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)// Spring charger replacement dialog.
16d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)class ChargerReplacementDialog : public ui::WebDialogDelegate {
17d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) public:
18d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  explicit ChargerReplacementDialog(gfx::NativeWindow parent_window);
19d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  virtual ~ChargerReplacementDialog();
20d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)
21d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  // True if ChargerReplacementDialog should be shown.
22d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  static bool ShouldShowDialog();
23d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)
24f60fc993c7b081abf77ce2ffc7fcca1142c8cb01Torne (Richard Coles)  static void SetFocusOnChargerDialogIfVisible();
25f60fc993c7b081abf77ce2ffc7fcca1142c8cb01Torne (Richard Coles)
26d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  void Show();
27d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  void set_can_close(bool can_close) { can_close_ = can_close; }
28d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)
29d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) private:
30d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  // ui::WebDialogDelegate implementation.
31d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  virtual ui::ModalType GetDialogModalType() const OVERRIDE;
32d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  virtual string16 GetDialogTitle() const OVERRIDE;
33d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  virtual GURL GetDialogContentURL() const OVERRIDE;
34d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  virtual void GetWebUIMessageHandlers(
35d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)      std::vector<content::WebUIMessageHandler*>* handlers) const OVERRIDE;
36d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  virtual void GetMinimumDialogSize(gfx::Size* size) const OVERRIDE;
37d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  virtual void GetDialogSize(gfx::Size* size) const OVERRIDE;
38d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  virtual std::string GetDialogArgs() const OVERRIDE;
39d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  virtual bool CanCloseDialog() const OVERRIDE;
40d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  // NOTE: This function deletes this object at the end.
41d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  virtual void OnDialogClosed(const std::string& json_retval) OVERRIDE;
42d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  virtual void OnCloseContents(
43d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)      content::WebContents* source, bool* out_close_dialog) OVERRIDE;
44d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  virtual bool ShouldShowDialogTitle() const OVERRIDE;
45d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  virtual bool HandleContextMenu(
46d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)      const content::ContextMenuParams& params) OVERRIDE;
47d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)
48d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  static bool is_window_visible_;
49f60fc993c7b081abf77ce2ffc7fcca1142c8cb01Torne (Richard Coles)  static gfx::NativeWindow current_window_;
50d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)
51d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  gfx::NativeWindow parent_window_;
52d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  bool can_close_;
53d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  ChargerReplacementHandler* charger_replacement_handler_;
54d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)
55d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ChargerReplacementDialog);
56d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)};
57d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)
58d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)}  // namespace chromeos
59d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)
60d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)#endif  // CHROME_BROWSER_CHROMEOS_CHARGER_REPLACE_CHARGER_REPLACEMENT_DIALOG_H_
61