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