Add unit test for the Settings API Bubble.
[chromium-blink-merge.git] / chrome / browser / ui / autofill / autofill_dialog_sign_in_delegate.h
blob5a748cf91b696b0726f38ed781c0e4a5bab92de1
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/size.h"
13 namespace autofill {
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 {
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);
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;
48 // WebContentsObserver implementation.
49 virtual void RenderViewCreated(
50 content::RenderViewHost* render_view_host) OVERRIDE;
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);
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();
61 // The dialog view hosting this sign in page.
62 AutofillDialogView* const dialog_view_;
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_;
69 // The minimum and maximum sizes that the sign-in view may have.
70 gfx::Size minimum_size_;
71 gfx::Size maximum_size_;
73 DISALLOW_COPY_AND_ASSIGN(AutofillDialogSignInDelegate);
76 } // namespace autofill
78 #endif // CHROME_BROWSER_UI_AUTOFILL_AUTOFILL_DIALOG_SIGN_IN_DELEGATE_H_