Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(548)

Side by Side Diff: content/renderer/render_view_impl.cc

Issue 98523003: Implement "presentation" feature for window.open() Base URL: https://github.com/drott/cameo.git@presentationWindowSquashed
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « content/public/browser/web_contents_delegate.cc ('k') | ui/base/window_open_disposition_list.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/render_view_impl.h" 5 #include "content/renderer/render_view_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after
548 case blink::WebNavigationPolicyCurrentTab: 548 case blink::WebNavigationPolicyCurrentTab:
549 return CURRENT_TAB; 549 return CURRENT_TAB;
550 case blink::WebNavigationPolicyNewBackgroundTab: 550 case blink::WebNavigationPolicyNewBackgroundTab:
551 return NEW_BACKGROUND_TAB; 551 return NEW_BACKGROUND_TAB;
552 case blink::WebNavigationPolicyNewForegroundTab: 552 case blink::WebNavigationPolicyNewForegroundTab:
553 return NEW_FOREGROUND_TAB; 553 return NEW_FOREGROUND_TAB;
554 case blink::WebNavigationPolicyNewWindow: 554 case blink::WebNavigationPolicyNewWindow:
555 return NEW_WINDOW; 555 return NEW_WINDOW;
556 case blink::WebNavigationPolicyNewPopup: 556 case blink::WebNavigationPolicyNewPopup:
557 return NEW_POPUP; 557 return NEW_POPUP;
558 case blink::WebNavigationPolicyPresentationWindow:
559 return PRESENTATION_WINDOW;
558 default: 560 default:
559 NOTREACHED() << "Unexpected WebNavigationPolicy"; 561 NOTREACHED() << "Unexpected WebNavigationPolicy";
560 return IGNORE_ACTION; 562 return IGNORE_ACTION;
561 } 563 }
562 } 564 }
563 565
564 // Returns true if the device scale is high enough that losing subpixel 566 // Returns true if the device scale is high enough that losing subpixel
565 // antialiasing won't have a noticeable effect on text quality. 567 // antialiasing won't have a noticeable effect on text quality.
566 static bool DeviceScaleEnsuresTextQuality(float device_scale_factor) { 568 static bool DeviceScaleEnsuresTextQuality(float device_scale_factor) {
567 #if defined(OS_ANDROID) 569 #if defined(OS_ANDROID)
(...skipping 1661 matching lines...) Expand 10 before | Expand all | Expand 10 after
2229 params.frame_name = frame_name; 2231 params.frame_name = frame_name;
2230 params.opener_frame_id = creator->identifier(); 2232 params.opener_frame_id = creator->identifier();
2231 params.opener_url = creator->document().url(); 2233 params.opener_url = creator->document().url();
2232 params.opener_top_level_frame_url = creator->top()->document().url(); 2234 params.opener_top_level_frame_url = creator->top()->document().url();
2233 GURL security_url(creator->document().securityOrigin().toString().utf8()); 2235 GURL security_url(creator->document().securityOrigin().toString().utf8());
2234 if (!security_url.is_valid()) 2236 if (!security_url.is_valid())
2235 security_url = GURL(); 2237 security_url = GURL();
2236 params.opener_security_origin = security_url; 2238 params.opener_security_origin = security_url;
2237 params.opener_suppressed = suppress_opener; 2239 params.opener_suppressed = suppress_opener;
2238 params.disposition = NavigationPolicyToDisposition(policy); 2240 params.disposition = NavigationPolicyToDisposition(policy);
2241
2239 if (!request.isNull()) { 2242 if (!request.isNull()) {
2240 params.target_url = request.url(); 2243 params.target_url = request.url();
2241 params.referrer = GetReferrerFromRequest(creator, request); 2244 params.referrer = GetReferrerFromRequest(creator, request);
2242 } 2245 }
2243 params.features = features; 2246 params.features = features;
2244 2247
2245 for (size_t i = 0; i < features.additionalFeatures.size(); ++i) 2248 for (size_t i = 0; i < features.additionalFeatures.size(); ++i)
2246 params.additional_features.push_back(features.additionalFeatures[i]); 2249 params.additional_features.push_back(features.additionalFeatures[i]);
2247 2250
2248 int32 routing_id = MSG_ROUTING_NONE; 2251 int32 routing_id = MSG_ROUTING_NONE;
(...skipping 626 matching lines...) Expand 10 before | Expand all | Expand 10 after
2875 } 2878 }
2876 did_show_ = true; 2879 did_show_ = true;
2877 2880
2878 DCHECK(opener_id_ != MSG_ROUTING_NONE); 2881 DCHECK(opener_id_ != MSG_ROUTING_NONE);
2879 2882
2880 // Force new windows to a popup if they were not opened with a user gesture. 2883 // Force new windows to a popup if they were not opened with a user gesture.
2881 if (!opened_by_user_gesture_) { 2884 if (!opened_by_user_gesture_) {
2882 // We exempt background tabs for compat with older versions of Chrome. 2885 // We exempt background tabs for compat with older versions of Chrome.
2883 // TODO(darin): This seems bogus. These should have a user gesture, so 2886 // TODO(darin): This seems bogus. These should have a user gesture, so
2884 // we probably don't need this check. 2887 // we probably don't need this check.
2885 if (policy != blink::WebNavigationPolicyNewBackgroundTab) 2888 if (policy != blink::WebNavigationPolicyNewBackgroundTab ||
2889 policy != blink::WebNavigationPolicyPresentationWindow)
2886 policy = blink::WebNavigationPolicyNewPopup; 2890 policy = blink::WebNavigationPolicyNewPopup;
2887 } 2891 }
2888 2892
2889 // NOTE: initial_pos_ may still have its default values at this point, but 2893 // NOTE: initial_pos_ may still have its default values at this point, but
2890 // that's okay. It'll be ignored if disposition is not NEW_POPUP, or the 2894 // that's okay. It'll be ignored if disposition is not NEW_POPUP, or the
2891 // browser process will impose a default position otherwise. 2895 // browser process will impose a default position otherwise.
2896
2892 Send(new ViewHostMsg_ShowView(opener_id_, routing_id_, 2897 Send(new ViewHostMsg_ShowView(opener_id_, routing_id_,
2893 NavigationPolicyToDisposition(policy), initial_pos_, 2898 NavigationPolicyToDisposition(policy), initial_pos_,
2894 opened_by_user_gesture_)); 2899 opened_by_user_gesture_));
2900
2895 SetPendingWindowRect(initial_pos_); 2901 SetPendingWindowRect(initial_pos_);
2896 } 2902 }
2897 2903
2898 void RenderViewImpl::runModal() { 2904 void RenderViewImpl::runModal() {
2899 DCHECK(did_show_) << "should already have shown the view"; 2905 DCHECK(did_show_) << "should already have shown the view";
2900 2906
2901 // Don't allow further dialogs if we are waiting to swap out, since the 2907 // Don't allow further dialogs if we are waiting to swap out, since the
2902 // PageGroupLoadDeferrer in our stack prevents it. 2908 // PageGroupLoadDeferrer in our stack prevents it.
2903 if (suppress_dialogs_until_swap_out_) 2909 if (suppress_dialogs_until_swap_out_)
2904 return; 2910 return;
(...skipping 3532 matching lines...) Expand 10 before | Expand all | Expand 10 after
6437 for (size_t i = 0; i < icon_urls.size(); i++) { 6443 for (size_t i = 0; i < icon_urls.size(); i++) {
6438 WebURL url = icon_urls[i].iconURL(); 6444 WebURL url = icon_urls[i].iconURL();
6439 if (!url.isEmpty()) 6445 if (!url.isEmpty())
6440 urls.push_back(FaviconURL(url, 6446 urls.push_back(FaviconURL(url,
6441 ToFaviconType(icon_urls[i].iconType()))); 6447 ToFaviconType(icon_urls[i].iconType())));
6442 } 6448 }
6443 SendUpdateFaviconURL(urls); 6449 SendUpdateFaviconURL(urls);
6444 } 6450 }
6445 6451
6446 } // namespace content 6452 } // namespace content
OLDNEW
« no previous file with comments | « content/public/browser/web_contents_delegate.cc ('k') | ui/base/window_open_disposition_list.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698