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#ifndef ASH_KEYBOARD_OVERLAY_KEYBOARD_OVERLAY_DELEGATE_H_
6#define ASH_KEYBOARD_OVERLAY_KEYBOARD_OVERLAY_DELEGATE_H_
7
8#include "ash/content_support/ash_with_content_export.h"
9#include "base/basictypes.h"
10#include "base/compiler_specific.h"
11#include "base/gtest_prod_util.h"
12#include "ui/web_dialogs/web_dialog_delegate.h"
13#include "url/gurl.h"
14
15namespace views {
16class WebDialogView;
17class Widget;
18}
19
20namespace ash {
21
22// Delegate to handle showing the keyboard overlay drawing. Exported for test.
23class ASH_WITH_CONTENT_EXPORT KeyboardOverlayDelegate
24    : public ui::WebDialogDelegate {
25 public:
26  KeyboardOverlayDelegate(const base::string16& title, const GURL& url);
27
28  // Shows the keyboard overlay widget. Returns the widget for testing.
29  views::Widget* Show(views::WebDialogView* view);
30
31  // Overridden from ui::WebDialogDelegate:
32  virtual void GetDialogSize(gfx::Size* size) const OVERRIDE;
33
34 private:
35  FRIEND_TEST_ALL_PREFIXES(KeyboardOverlayDelegateTest, ShowAndClose);
36
37  virtual ~KeyboardOverlayDelegate();
38
39  // Overridden from ui::WebDialogDelegate:
40  virtual ui::ModalType GetDialogModalType() const OVERRIDE;
41  virtual base::string16 GetDialogTitle() const OVERRIDE;
42  virtual GURL GetDialogContentURL() const OVERRIDE;
43  virtual void GetWebUIMessageHandlers(
44      std::vector<content::WebUIMessageHandler*>* handlers) const OVERRIDE;
45  virtual std::string GetDialogArgs() const OVERRIDE;
46  virtual void OnDialogClosed(const std::string& json_retval) OVERRIDE;
47  virtual void OnCloseContents(content::WebContents* source,
48                               bool* out_close_dialog) OVERRIDE;
49  virtual bool ShouldShowDialogTitle() const OVERRIDE;
50  virtual bool HandleContextMenu(
51      const content::ContextMenuParams& params) OVERRIDE;
52
53  // The dialog title.
54  base::string16 title_;
55
56  // The URL of the keyboard overlay.
57  GURL url_;
58
59  // The widget associated with this delegate. Not owned.
60  views::Widget* widget_;
61
62  DISALLOW_COPY_AND_ASSIGN(KeyboardOverlayDelegate);
63};
64
65}  // namespace ash
66
67#endif  // ASH_KEYBOARD_OVERLAY_KEYBOARD_OVERLAY_DELEGATE_H_
68