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 #include "chrome/browser/ui/blocked_content/blocked_window_params.h"
7 #include "chrome/browser/profiles/profile.h"
8 #include "chrome/browser/ui/tabs/tab_strip_model.h"
9 #include "content/public/browser/render_process_host.h"
10 #include "content/public/browser/web_contents.h"
11 #include "third_party/WebKit/public/web/WebWindowFeatures.h"
14 BlockedWindowParams::BlockedWindowParams(
15 const GURL
& target_url
,
16 const content::Referrer
& referrer
,
17 WindowOpenDisposition disposition
,
18 const blink::WebWindowFeatures
& features
,
20 bool opener_suppressed
,
21 int render_process_id
,
23 : target_url_(target_url
),
25 disposition_(disposition
),
27 user_gesture_(user_gesture
),
28 opener_suppressed_(opener_suppressed
),
29 render_process_id_(render_process_id
),
30 opener_id_(opener_id
) {
33 chrome::NavigateParams
BlockedWindowParams::CreateNavigateParams(
34 content::WebContents
* web_contents
) const {
35 GURL
popup_url(target_url_
);
36 web_contents
->GetRenderProcessHost()->FilterURL(false, &popup_url
);
37 chrome::NavigateParams
nav_params(
38 Profile::FromBrowserContext(web_contents
->GetBrowserContext()),
40 content::PAGE_TRANSITION_LINK
);
41 nav_params
.referrer
= referrer_
;
42 nav_params
.source_contents
= web_contents
;
43 nav_params
.is_renderer_initiated
= true;
44 nav_params
.tabstrip_add_types
= TabStripModel::ADD_ACTIVE
;
45 nav_params
.window_action
= chrome::NavigateParams::SHOW_WINDOW
;
46 nav_params
.user_gesture
= user_gesture_
;
47 nav_params
.should_set_opener
= !opener_suppressed_
;
48 nav_params
.window_bounds
= web_contents
->GetContainerBounds();
50 nav_params
.window_bounds
.set_x(features_
.x
);
52 nav_params
.window_bounds
.set_y(features_
.y
);
53 if (features_
.widthSet
)
54 nav_params
.window_bounds
.set_width(features_
.width
);
55 if (features_
.heightSet
)
56 nav_params
.window_bounds
.set_height(features_
.height
);
58 // Compare RenderViewImpl::show().
59 if (!user_gesture_
&& disposition_
!= NEW_BACKGROUND_TAB
)
60 nav_params
.disposition
= NEW_POPUP
;
62 nav_params
.disposition
= disposition_
;