Home | History | Annotate | Download | only in autofill
      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