15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/web_dialogs/web_dialog_web_contents_delegate.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::BrowserContext; 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::OpenURLParams; 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::WebContents; 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ui { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Incognito profiles are not long-lived, so we always want to store a 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// non-incognito profile. 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(akalin): Should we make it so that we have a default incognito 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// profile that's long-lived? Of course, we'd still have to clear it out 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// when all incognito browsers close. 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebDialogWebContentsDelegate::WebDialogWebContentsDelegate( 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::BrowserContext* browser_context, 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContentsHandler* handler) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : browser_context_(browser_context), 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) handler_(handler) { 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CHECK(handler_.get()); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebDialogWebContentsDelegate::~WebDialogWebContentsDelegate() { 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebDialogWebContentsDelegate::Detach() { 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser_context_ = NULL; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebContents* WebDialogWebContentsDelegate::OpenURLFromTab( 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContents* source, const OpenURLParams& params) { 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return handler_->OpenURLFromTab(browser_context_, source, params); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebDialogWebContentsDelegate::AddNewContents( 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContents* source, WebContents* new_contents, 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WindowOpenDisposition disposition, const gfx::Rect& initial_pos, 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool user_gesture, 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool* was_blocked) { 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) handler_->AddNewContents(browser_context_, source, new_contents, disposition, 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) initial_pos, user_gesture); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WebDialogWebContentsDelegate::IsPopupOrPanel( 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const WebContents* source) const { 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This needs to return true so that we are allowed to be resized by our 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // contents. 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace ui 59