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.
5 #ifndef CHROME_BROWSER_UI_AUTOFILL_AUTOFILL_DIALOG_SIGN_IN_DELEGATE_H_
6 #define CHROME_BROWSER_UI_AUTOFILL_AUTOFILL_DIALOG_SIGN_IN_DELEGATE_H_
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/geometry/size.h"
15 class AutofillDialogView
;
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
{
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
);
32 // WebContentsDelegate implementation.
33 void ResizeDueToAutoResize(content::WebContents
* source
,
34 const gfx::Size
& preferred_size
) override
;
35 content::WebContents
* OpenURLFromTab(
36 content::WebContents
* source
,
37 const content::OpenURLParams
& params
) override
;
38 void AddNewContents(content::WebContents
* source
,
39 content::WebContents
* new_contents
,
40 WindowOpenDisposition disposition
,
41 const gfx::Rect
& initial_rect
,
43 bool* was_blocked
) override
;
44 bool PreHandleGestureEvent(content::WebContents
* source
,
45 const blink::WebGestureEvent
& event
) override
;
47 // WebContentsObserver implementation.
48 void RenderViewCreated(content::RenderViewHost
* render_view_host
) override
;
50 // Updates the size limits and enables auto-resize for this view.
51 void UpdateLimitsAndEnableAutoResize(const gfx::Size
& minimum_size
,
52 const gfx::Size
& maximum_size
);
55 // Enables auto-resizing for this view, if possible, constrained to the latest
56 // minimum and maximum size allowed by the delegate.
57 void EnableAutoResize();
59 // The dialog view hosting this sign in page.
60 AutofillDialogView
* const dialog_view_
;
62 // The WebContents of the page that originated the dialog. Weak ptr, but
63 // guaranteed to outlive the dialog, since the dialog is tab-modal to those
65 content::WebContents
* const originating_web_contents_
;
67 // The minimum and maximum sizes that the sign-in view may have.
68 gfx::Size minimum_size_
;
69 gfx::Size maximum_size_
;
71 DISALLOW_COPY_AND_ASSIGN(AutofillDialogSignInDelegate
);
74 } // namespace autofill
76 #endif // CHROME_BROWSER_UI_AUTOFILL_AUTOFILL_DIALOG_SIGN_IN_DELEGATE_H_