blocked_window_params.cc revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// found in the LICENSE file. 458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/ui/blocked_content/blocked_window_params.h" 658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/profiles/profile.h" 858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/ui/tabs/tab_strip_model.h" 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "content/public/browser/render_process_host.h" 1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "content/public/browser/web_contents.h" 1158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "content/public/browser/web_contents_view.h" 1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "third_party/WebKit/public/web/WebWindowFeatures.h" 1358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "url/gurl.h" 1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)BlockedWindowParams::BlockedWindowParams( 1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const GURL& target_url, 1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const content::Referrer& referrer, 1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) WindowOpenDisposition disposition, 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebWindowFeatures& features, 2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) bool user_gesture, 2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) bool opener_suppressed, 2258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) int render_process_id, 2358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) int opener_id) 2458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) : target_url_(target_url), 2558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) referrer_(referrer), 2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) disposition_(disposition), 2758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) features_(features), 2858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) user_gesture_(user_gesture), 2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) opener_suppressed_(opener_suppressed), 3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) render_process_id_(render_process_id), 3158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) opener_id_(opener_id) { 3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 3458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)chrome::NavigateParams BlockedWindowParams::CreateNavigateParams( 3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) content::WebContents* web_contents) const { 3658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) GURL popup_url(target_url_); 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) web_contents->GetRenderProcessHost()->FilterURL(false, &popup_url); 3858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) chrome::NavigateParams nav_params( 3958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) Profile::FromBrowserContext(web_contents->GetBrowserContext()), 4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) popup_url, 4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) content::PAGE_TRANSITION_LINK); 4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) nav_params.referrer = referrer_; 4358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) nav_params.source_contents = web_contents; 4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) nav_params.is_renderer_initiated = true; 4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) nav_params.tabstrip_add_types = TabStripModel::ADD_ACTIVE; 4658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) nav_params.window_action = chrome::NavigateParams::SHOW_WINDOW; 4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) nav_params.user_gesture = user_gesture_; 4858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) nav_params.should_set_opener = !opener_suppressed_; 4958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) web_contents->GetView()->GetContainerBounds(&nav_params.window_bounds); 5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) if (features_.xSet) 5158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) nav_params.window_bounds.set_x(features_.x); 5258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) if (features_.ySet) 5358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) nav_params.window_bounds.set_y(features_.y); 5458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) if (features_.widthSet) 5558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) nav_params.window_bounds.set_width(features_.width); 5658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) if (features_.heightSet) 5758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) nav_params.window_bounds.set_height(features_.height); 5858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 5958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Compare RenderViewImpl::show(). 6058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) if (!user_gesture_ && disposition_ != NEW_BACKGROUND_TAB) 6158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) nav_params.disposition = NEW_POPUP; 6258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) else 6358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) nav_params.disposition = disposition_; 6458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 6558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return nav_params; 6658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 67