1 // Copyright 2013 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 CHROME_BROWSER_UI_AUTOFILL_AUTOFILL_DIALOG_SIGN_IN_DELEGATE_H_ 6 #define CHROME_BROWSER_UI_AUTOFILL_AUTOFILL_DIALOG_SIGN_IN_DELEGATE_H_ 7 8 #include "base/basictypes.h" 9 #include "content/public/browser/web_contents_delegate.h" 10 #include "content/public/browser/web_contents_observer.h" 11 #include "ui/gfx/size.h" 12 13 namespace autofill { 14 15 class AutofillDialogView; 16 17 // AutofillDialogSignInDelegate provides a WebContentsDelegate and 18 // WebContentsObserver for the sign-in page in the autofill dialog. Allows the 19 // dialog to resize based on the size of the hosted web page. 20 // TODO(abodenha) It probably makes sense to move the NotificationObserver 21 // for detecting completed sign-in to this class instead of 22 // AutofillDialogControllerImpl. 23 class AutofillDialogSignInDelegate: public content::WebContentsDelegate, 24 public content::WebContentsObserver { 25 public: 26 AutofillDialogSignInDelegate(AutofillDialogView* dialog_view, 27 content::WebContents* dialog_web_contents, 28 content::WebContents* originating_web_contents, 29 const gfx::Size& minimum_size, 30 const gfx::Size& maximum_size); 31 32 // WebContentsDelegate implementation. 33 virtual void ResizeDueToAutoResize(content::WebContents* source, 34 const gfx::Size& preferred_size) OVERRIDE; 35 virtual content::WebContents* OpenURLFromTab( 36 content::WebContents* source, 37 const content::OpenURLParams& params) OVERRIDE; 38 virtual void AddNewContents(content::WebContents* source, 39 content::WebContents* new_contents, 40 WindowOpenDisposition disposition, 41 const gfx::Rect& initial_pos, 42 bool user_gesture, 43 bool* was_blocked) OVERRIDE; 44 virtual bool PreHandleGestureEvent( 45 content::WebContents* source, 46 const blink::WebGestureEvent& event) OVERRIDE; 47 48 // WebContentsObserver implementation. 49 virtual void RenderViewCreated( 50 content::RenderViewHost* render_view_host) OVERRIDE; 51 52 // Updates the size limits and enables auto-resize for this view. 53 void UpdateLimitsAndEnableAutoResize(const gfx::Size& minimum_size, 54 const gfx::Size& maximum_size); 55 56 private: 57 // Enables auto-resizing for this view, if possible, constrained to the latest 58 // minimum and maximum size allowed by the delegate. 59 void EnableAutoResize(); 60 61 // The dialog view hosting this sign in page. 62 AutofillDialogView* const dialog_view_; 63 64 // The WebContents of the page that originated the dialog. Weak ptr, but 65 // guaranteed to outlive the dialog, since the dialog is tab-modal to those 66 // contents. 67 content::WebContents* const originating_web_contents_; 68 69 // The minimum and maximum sizes that the sign-in view may have. 70 gfx::Size minimum_size_; 71 gfx::Size maximum_size_; 72 73 DISALLOW_COPY_AND_ASSIGN(AutofillDialogSignInDelegate); 74 }; 75 76 } // namespace autofill 77 78 #endif // CHROME_BROWSER_UI_AUTOFILL_AUTOFILL_DIALOG_SIGN_IN_DELEGATE_H_ 79