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 15 namespace views { 16 class WebDialogView; 17 class Widget; 18 } 19 20 namespace ash { 21 22 // Delegate to handle showing the keyboard overlay drawing. Exported for test. 23 class 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