autofill_dialog_sign_in_delegate.cc revision d0247b1b59f9c528cb6df88b4f2b9afaf80d181e
190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved.
290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// found in the LICENSE file.
490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chrome/browser/ui/autofill/autofill_dialog_sign_in_delegate.h"
690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chrome/browser/ui/autofill/autofill_dialog_view.h"
890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "content/public/browser/render_view_host.h"
990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "content/public/browser/web_contents.h"
1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace autofill {
1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)AutofillDialogSignInDelegate::AutofillDialogSignInDelegate(
1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    AutofillDialogView* dialog_view,
15d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)    content::WebContents* web_contents,
16d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)    content::WebContentsDelegate* wrapped_delegate)
1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    : WebContentsObserver(web_contents),
18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      dialog_view_(dialog_view),
19d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)      min_width_(400),
20d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)      wrapped_delegate_(wrapped_delegate) {
21d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  DCHECK(wrapped_delegate_);
2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  web_contents->SetDelegate(this);
2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void AutofillDialogSignInDelegate::ResizeDueToAutoResize(
2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    content::WebContents* source, const gfx::Size& pref_size) {
2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  dialog_view_->OnSignInResize(pref_size);
2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
30d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)content::WebContents* AutofillDialogSignInDelegate::OpenURLFromTab(
31d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)    content::WebContents* source,
32d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)    const content::OpenURLParams& params) {
33d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  return wrapped_delegate_->OpenURLFromTab(source, params);
34d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)}
35d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
36d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)void AutofillDialogSignInDelegate::AddNewContents(
37d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)    content::WebContents* source,
38d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)    content::WebContents* new_contents,
39d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)    WindowOpenDisposition disposition,
40d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)    const gfx::Rect& initial_pos,
41d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)    bool user_gesture,
42d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)    bool* was_blocked) {
43d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  wrapped_delegate_->AddNewContents(source, new_contents, disposition,
44d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)                                    initial_pos, user_gesture, was_blocked);
45d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)}
46d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
4790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void AutofillDialogSignInDelegate::RenderViewCreated(
4890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    content::RenderViewHost* render_view_host) {
49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  SetMinWidth(min_width_);
5090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
5190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Set the initial size as soon as we have an RVH to avoid
5290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // bad size jumping.
53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  dialog_view_->OnSignInResize(GetMinSize());
54eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
55eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
56eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid AutofillDialogSignInDelegate::SetMinWidth(int width) {
57eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  min_width_ = width;
58eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  content::RenderViewHost* host = web_contents()->GetRenderViewHost();
59eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  if (host)
60eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    host->EnableAutoResize(GetMinSize(), GetMaxSize());
61eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
62eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
63eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochgfx::Size AutofillDialogSignInDelegate::GetMinSize() const {
64eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  return gfx::Size(min_width_, 331);
65eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
66eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
67eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochgfx::Size AutofillDialogSignInDelegate::GetMaxSize() const {
68eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  return gfx::Size(std::max(min_width_, 800), 600);
6990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
7090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
7190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}  // namespace autofill
72