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