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

Side by Side Diff: third_party/WebKit/Source/core/loader/MixedContentChecker.cpp

Issue 2383403002: Reflow comments in core/loader (Closed)
Patch Set: yhirano comments Created 4 years, 2 months 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 #include "platform/weborigin/SchemeRegistry.h" 42 #include "platform/weborigin/SchemeRegistry.h"
43 #include "platform/weborigin/SecurityOrigin.h" 43 #include "platform/weborigin/SecurityOrigin.h"
44 #include "public/platform/WebAddressSpace.h" 44 #include "public/platform/WebAddressSpace.h"
45 #include "public/platform/WebInsecureRequestPolicy.h" 45 #include "public/platform/WebInsecureRequestPolicy.h"
46 #include "wtf/text/StringBuilder.h" 46 #include "wtf/text/StringBuilder.h"
47 47
48 namespace blink { 48 namespace blink {
49 49
50 namespace { 50 namespace {
51 51
52 // When a frame is local, use its full URL to represent the main 52 // When a frame is local, use its full URL to represent the main resource. When
53 // resource. When the frame is remote, the full URL isn't accessible, so 53 // the frame is remote, the full URL isn't accessible, so use the origin. This
54 // use the origin. This function is used, for example, to determine the 54 // function is used, for example, to determine the URL to show in console
55 // URL to show in console messages about mixed content. 55 // messages about mixed content.
56 KURL mainResourceUrlForFrame(Frame* frame) { 56 KURL mainResourceUrlForFrame(Frame* frame) {
57 if (frame->isRemoteFrame()) 57 if (frame->isRemoteFrame())
58 return KURL(KURL(), 58 return KURL(KURL(),
59 frame->securityContext()->getSecurityOrigin()->toString()); 59 frame->securityContext()->getSecurityOrigin()->toString());
60 return toLocalFrame(frame)->document()->url(); 60 return toLocalFrame(frame)->document()->url();
61 } 61 }
62 62
63 } // namespace 63 } // namespace
64 64
65 static void measureStricterVersionOfIsMixedContent(Frame* frame, 65 static void measureStricterVersionOfIsMixedContent(Frame* frame,
66 const KURL& url) { 66 const KURL& url) {
67 // We're currently only checking for mixed content in `https://*` contexts. 67 // We're currently only checking for mixed content in `https://*` contexts.
68 // What about other "secure" contexts the SchemeRegistry knows about? We'll 68 // What about other "secure" contexts the SchemeRegistry knows about? We'll
69 // use this method to measure the occurance of non-webby mixed content to 69 // use this method to measure the occurance of non-webby mixed content to make
70 // make sure we're not breaking the world without realizing it. 70 // sure we're not breaking the world without realizing it.
71 SecurityOrigin* origin = frame->securityContext()->getSecurityOrigin(); 71 SecurityOrigin* origin = frame->securityContext()->getSecurityOrigin();
72 if (MixedContentChecker::isMixedContent(origin, url)) { 72 if (MixedContentChecker::isMixedContent(origin, url)) {
73 if (origin->protocol() != "https") 73 if (origin->protocol() != "https")
74 UseCounter::count( 74 UseCounter::count(
75 frame, 75 frame,
76 UseCounter::MixedContentInNonHTTPSFrameThatRestrictsMixedContent); 76 UseCounter::MixedContentInNonHTTPSFrameThatRestrictsMixedContent);
77 } else if (!SecurityOrigin::isSecure(url) && 77 } else if (!SecurityOrigin::isSecure(url) &&
78 SchemeRegistry::shouldTreatURLSchemeAsSecure(origin->protocol())) { 78 SchemeRegistry::shouldTreatURLSchemeAsSecure(origin->protocol())) {
79 UseCounter::count( 79 UseCounter::count(
80 frame, 80 frame,
(...skipping 26 matching lines...) Expand all
107 NetworkUtils::isLocalHostname(url.host(), nullptr)) 107 NetworkUtils::isLocalHostname(url.host(), nullptr))
108 isAllowed = false; 108 isAllowed = false;
109 return !isAllowed; 109 return !isAllowed;
110 } 110 }
111 111
112 // static 112 // static
113 Frame* MixedContentChecker::inWhichFrameIsContentMixed( 113 Frame* MixedContentChecker::inWhichFrameIsContentMixed(
114 Frame* frame, 114 Frame* frame,
115 WebURLRequest::FrameType frameType, 115 WebURLRequest::FrameType frameType,
116 const KURL& url) { 116 const KURL& url) {
117 // We only care about subresource loads; top-level navigations cannot be mixed content. Neither can frameless requests. 117 // We only care about subresource loads; top-level navigations cannot be mixed
118 // content. Neither can frameless requests.
118 if (frameType == WebURLRequest::FrameTypeTopLevel || !frame) 119 if (frameType == WebURLRequest::FrameTypeTopLevel || !frame)
119 return nullptr; 120 return nullptr;
120 121
121 // Check the top frame first. 122 // Check the top frame first.
122 if (Frame* top = frame->tree().top()) { 123 if (Frame* top = frame->tree().top()) {
123 measureStricterVersionOfIsMixedContent(top, url); 124 measureStricterVersionOfIsMixedContent(top, url);
124 if (isMixedContent(top->securityContext()->getSecurityOrigin(), url)) 125 if (isMixedContent(top->securityContext()->getSecurityOrigin(), url))
125 return top; 126 return top;
126 } 127 }
127 128
(...skipping 24 matching lines...) Expand all
152 MessageLevel messageLevel = allowed ? WarningMessageLevel : ErrorMessageLevel; 153 MessageLevel messageLevel = allowed ? WarningMessageLevel : ErrorMessageLevel;
153 frame->document()->addConsoleMessage( 154 frame->document()->addConsoleMessage(
154 ConsoleMessage::create(SecurityMessageSource, messageLevel, message)); 155 ConsoleMessage::create(SecurityMessageSource, messageLevel, message));
155 } 156 }
156 157
157 // static 158 // static
158 void MixedContentChecker::count(Frame* frame, 159 void MixedContentChecker::count(Frame* frame,
159 WebURLRequest::RequestContext requestContext) { 160 WebURLRequest::RequestContext requestContext) {
160 UseCounter::count(frame, UseCounter::MixedContentPresent); 161 UseCounter::count(frame, UseCounter::MixedContentPresent);
161 162
162 // Roll blockable content up into a single counter, count unblocked types indi vidually so we 163 // Roll blockable content up into a single counter, count unblocked types
163 // can determine when they can be safely moved to the blockable category: 164 // individually so we can determine when they can be safely moved to the
165 // blockable category:
164 WebMixedContent::ContextType contextType = 166 WebMixedContent::ContextType contextType =
165 WebMixedContent::contextTypeFromRequestContext( 167 WebMixedContent::contextTypeFromRequestContext(
166 requestContext, 168 requestContext,
167 frame->settings()->strictMixedContentCheckingForPlugin()); 169 frame->settings()->strictMixedContentCheckingForPlugin());
168 if (contextType == WebMixedContent::ContextType::Blockable) { 170 if (contextType == WebMixedContent::ContextType::Blockable) {
169 UseCounter::count(frame, UseCounter::MixedContentBlockable); 171 UseCounter::count(frame, UseCounter::MixedContentBlockable);
170 return; 172 return;
171 } 173 }
172 174
173 UseCounter::Feature feature; 175 UseCounter::Feature feature;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 inWhichFrameIsContentMixed(effectiveFrame, frameType, url); 219 inWhichFrameIsContentMixed(effectiveFrame, frameType, url);
218 if (!mixedFrame) 220 if (!mixedFrame)
219 return false; 221 return false;
220 222
221 MixedContentChecker::count(mixedFrame, requestContext); 223 MixedContentChecker::count(mixedFrame, requestContext);
222 if (ContentSecurityPolicy* policy = 224 if (ContentSecurityPolicy* policy =
223 frame->securityContext()->contentSecurityPolicy()) 225 frame->securityContext()->contentSecurityPolicy())
224 policy->reportMixedContent(url, redirectStatus); 226 policy->reportMixedContent(url, redirectStatus);
225 227
226 Settings* settings = mixedFrame->settings(); 228 Settings* settings = mixedFrame->settings();
227 // Use the current local frame's client; the embedder doesn't 229 // Use the current local frame's client; the embedder doesn't distinguish
228 // distinguish mixed content signals from different frames on the 230 // mixed content signals from different frames on the same page.
229 // same page.
230 FrameLoaderClient* client = frame->loader().client(); 231 FrameLoaderClient* client = frame->loader().client();
231 SecurityOrigin* securityOrigin = 232 SecurityOrigin* securityOrigin =
232 mixedFrame->securityContext()->getSecurityOrigin(); 233 mixedFrame->securityContext()->getSecurityOrigin();
233 bool allowed = false; 234 bool allowed = false;
234 235
235 // If we're in strict mode, we'll automagically fail everything, and intention ally skip 236 // If we're in strict mode, we'll automagically fail everything, and
236 // the client checks in order to prevent degrading the site's security UI. 237 // intentionally skip the client checks in order to prevent degrading the
238 // site's security UI.
237 bool strictMode = mixedFrame->securityContext()->getInsecureRequestPolicy() & 239 bool strictMode = mixedFrame->securityContext()->getInsecureRequestPolicy() &
238 kBlockAllMixedContent || 240 kBlockAllMixedContent ||
239 settings->strictMixedContentChecking(); 241 settings->strictMixedContentChecking();
240 242
241 WebMixedContent::ContextType contextType = 243 WebMixedContent::ContextType contextType =
242 WebMixedContent::contextTypeFromRequestContext( 244 WebMixedContent::contextTypeFromRequestContext(
243 requestContext, settings->strictMixedContentCheckingForPlugin()); 245 requestContext, settings->strictMixedContentCheckingForPlugin());
244 246
245 // If we're loading the main resource of a subframe, we need to take a close l ook at the loaded URL. 247 // If we're loading the main resource of a subframe, we need to take a close
246 // If we're dealing with a CORS-enabled scheme, then block mixed frames as act ive content. Otherwise, 248 // look at the loaded URL. If we're dealing with a CORS-enabled scheme, then
247 // treat frames as passive content. 249 // block mixed frames as active content. Otherwise, treat frames as passive
250 // content.
248 // 251 //
249 // FIXME: Remove this temporary hack once we have a reasonable API for launchi ng external applications 252 // FIXME: Remove this temporary hack once we have a reasonable API for
250 // via URLs. http://crbug.com/318788 and https://crbug.com/393481 253 // launching external applications via URLs. http://crbug.com/318788 and
254 // https://crbug.com/393481
251 if (frameType == WebURLRequest::FrameTypeNested && 255 if (frameType == WebURLRequest::FrameTypeNested &&
252 !SchemeRegistry::shouldTreatURLSchemeAsCORSEnabled(url.protocol())) 256 !SchemeRegistry::shouldTreatURLSchemeAsCORSEnabled(url.protocol()))
253 contextType = WebMixedContent::ContextType::OptionallyBlockable; 257 contextType = WebMixedContent::ContextType::OptionallyBlockable;
254 258
255 switch (contextType) { 259 switch (contextType) {
256 case WebMixedContent::ContextType::OptionallyBlockable: 260 case WebMixedContent::ContextType::OptionallyBlockable:
257 client->passiveInsecureContentFound(url); 261 client->passiveInsecureContentFound(url);
258 allowed = !strictMode; 262 allowed = !strictMode;
259 if (allowed) 263 if (allowed)
260 client->didDisplayInsecureContent(); 264 client->didDisplayInsecureContent();
261 break; 265 break;
262 266
263 case WebMixedContent::ContextType::Blockable: { 267 case WebMixedContent::ContextType::Blockable: {
264 // Strictly block subresources that are mixed with respect to 268 // Strictly block subresources that are mixed with respect to their
265 // their subframes, unless all insecure content is allowed. This 269 // subframes, unless all insecure content is allowed. This is to avoid the
266 // is to avoid the following situation: https://a.com embeds 270 // following situation: https://a.com embeds https://b.com, which loads a
267 // https://b.com, which loads a script over insecure HTTP. The 271 // script over insecure HTTP. The user opts to allow the insecure content,
268 // user opts to allow the insecure content, thinking that they are 272 // thinking that they are allowing an insecure script to run on
269 // allowing an insecure script to run on https://a.com and not 273 // https://a.com and not realizing that they are in fact allowing an
270 // realizing that they are in fact allowing an insecure script on 274 // insecure script on https://b.com.
271 // https://b.com.
272 if (!settings->allowRunningOfInsecureContent() && 275 if (!settings->allowRunningOfInsecureContent() &&
273 requestIsSubframeSubresource(effectiveFrame, frameType) && 276 requestIsSubframeSubresource(effectiveFrame, frameType) &&
274 isMixedContent(frame->securityContext()->getSecurityOrigin(), url)) { 277 isMixedContent(frame->securityContext()->getSecurityOrigin(), url)) {
275 UseCounter::count(mixedFrame, 278 UseCounter::count(mixedFrame,
276 UseCounter::BlockableMixedContentInSubframeBlocked); 279 UseCounter::BlockableMixedContentInSubframeBlocked);
277 allowed = false; 280 allowed = false;
278 break; 281 break;
279 } 282 }
280 283
281 bool shouldAskEmbedder = 284 bool shouldAskEmbedder =
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 return false; 343 return false;
341 344
342 UseCounter::count(mixedFrame, UseCounter::MixedContentPresent); 345 UseCounter::count(mixedFrame, UseCounter::MixedContentPresent);
343 UseCounter::count(mixedFrame, UseCounter::MixedContentWebSocket); 346 UseCounter::count(mixedFrame, UseCounter::MixedContentWebSocket);
344 if (ContentSecurityPolicy* policy = 347 if (ContentSecurityPolicy* policy =
345 frame->securityContext()->contentSecurityPolicy()) 348 frame->securityContext()->contentSecurityPolicy())
346 policy->reportMixedContent(url, 349 policy->reportMixedContent(url,
347 ResourceRequest::RedirectStatus::NoRedirect); 350 ResourceRequest::RedirectStatus::NoRedirect);
348 351
349 Settings* settings = mixedFrame->settings(); 352 Settings* settings = mixedFrame->settings();
350 // Use the current local frame's client; the embedder doesn't 353 // Use the current local frame's client; the embedder doesn't distinguish
351 // distinguish mixed content signals from different frames on the 354 // mixed content signals from different frames on the same page.
352 // same page.
353 FrameLoaderClient* client = frame->loader().client(); 355 FrameLoaderClient* client = frame->loader().client();
354 SecurityOrigin* securityOrigin = 356 SecurityOrigin* securityOrigin =
355 mixedFrame->securityContext()->getSecurityOrigin(); 357 mixedFrame->securityContext()->getSecurityOrigin();
356 bool allowed = false; 358 bool allowed = false;
357 359
358 // If we're in strict mode, we'll automagically fail everything, and intention ally skip 360 // If we're in strict mode, we'll automagically fail everything, and
359 // the client checks in order to prevent degrading the site's security UI. 361 // intentionally skip the client checks in order to prevent degrading the
362 // site's security UI.
360 bool strictMode = mixedFrame->securityContext()->getInsecureRequestPolicy() & 363 bool strictMode = mixedFrame->securityContext()->getInsecureRequestPolicy() &
361 kBlockAllMixedContent || 364 kBlockAllMixedContent ||
362 settings->strictMixedContentChecking(); 365 settings->strictMixedContentChecking();
363 if (!strictMode) { 366 if (!strictMode) {
364 bool allowedPerSettings = 367 bool allowedPerSettings =
365 settings && settings->allowRunningOfInsecureContent(); 368 settings && settings->allowRunningOfInsecureContent();
366 allowed = client->allowRunningInsecureContent(allowedPerSettings, 369 allowed = client->allowRunningInsecureContent(allowedPerSettings,
367 securityOrigin, url); 370 securityOrigin, url);
368 } 371 }
369 372
370 if (allowed) 373 if (allowed)
371 client->didRunInsecureContent(securityOrigin, url); 374 client->didRunInsecureContent(securityOrigin, url);
372 375
373 if (reportingStatus == SendReport) 376 if (reportingStatus == SendReport)
374 logToConsoleAboutWebSocket(frame, mainResourceUrlForFrame(mixedFrame), url, 377 logToConsoleAboutWebSocket(frame, mainResourceUrlForFrame(mixedFrame), url,
375 allowed); 378 allowed);
376 return !allowed; 379 return !allowed;
377 } 380 }
378 381
379 bool MixedContentChecker::isMixedFormAction(LocalFrame* frame, 382 bool MixedContentChecker::isMixedFormAction(LocalFrame* frame,
380 const KURL& url, 383 const KURL& url,
381 ReportingStatus reportingStatus) { 384 ReportingStatus reportingStatus) {
382 // For whatever reason, some folks handle forms via JavaScript, and submit to `javascript:void(0)` 385 // For whatever reason, some folks handle forms via JavaScript, and submit to
383 // rather than calling `preventDefault()`. We special-case `javascript:` URLs here, as they don't 386 // `javascript:void(0)` rather than calling `preventDefault()`. We
384 // introduce MixedContent for form submissions. 387 // special-case `javascript:` URLs here, as they don't introduce MixedContent
388 // for form submissions.
385 if (url.protocolIs("javascript")) 389 if (url.protocolIs("javascript"))
386 return false; 390 return false;
387 391
388 Frame* mixedFrame = 392 Frame* mixedFrame =
389 inWhichFrameIsContentMixed(frame, WebURLRequest::FrameTypeNone, url); 393 inWhichFrameIsContentMixed(frame, WebURLRequest::FrameTypeNone, url);
390 if (!mixedFrame) 394 if (!mixedFrame)
391 return false; 395 return false;
392 396
393 UseCounter::count(mixedFrame, UseCounter::MixedContentPresent); 397 UseCounter::count(mixedFrame, UseCounter::MixedContentPresent);
394 398
395 // Use the current local frame's client; the embedder doesn't 399 // Use the current local frame's client; the embedder doesn't distinguish
396 // distinguish mixed content signals from different frames on the 400 // mixed content signals from different frames on the same page.
397 // same page.
398 frame->loader().client()->didDisplayInsecureContent(); 401 frame->loader().client()->didDisplayInsecureContent();
399 402
400 if (reportingStatus == SendReport) { 403 if (reportingStatus == SendReport) {
401 String message = String::format( 404 String message = String::format(
402 "Mixed Content: The page at '%s' was loaded over a secure connection, " 405 "Mixed Content: The page at '%s' was loaded over a secure connection, "
403 "but contains a form which targets an insecure endpoint '%s'. This " 406 "but contains a form which targets an insecure endpoint '%s'. This "
404 "endpoint should be made available over a secure connection.", 407 "endpoint should be made available over a secure connection.",
405 mainResourceUrlForFrame(mixedFrame).elidedString().utf8().data(), 408 mainResourceUrlForFrame(mixedFrame).elidedString().utf8().data(),
406 url.elidedString().utf8().data()); 409 url.elidedString().utf8().data());
407 frame->document()->addConsoleMessage(ConsoleMessage::create( 410 frame->document()->addConsoleMessage(ConsoleMessage::create(
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 442
440 void MixedContentChecker::handleCertificateError( 443 void MixedContentChecker::handleCertificateError(
441 LocalFrame* frame, 444 LocalFrame* frame,
442 const ResourceResponse& response, 445 const ResourceResponse& response,
443 WebURLRequest::FrameType frameType, 446 WebURLRequest::FrameType frameType,
444 WebURLRequest::RequestContext requestContext) { 447 WebURLRequest::RequestContext requestContext) {
445 Frame* effectiveFrame = effectiveFrameForFrameType(frame, frameType); 448 Frame* effectiveFrame = effectiveFrameForFrameType(frame, frameType);
446 if (frameType == WebURLRequest::FrameTypeTopLevel || !effectiveFrame) 449 if (frameType == WebURLRequest::FrameTypeTopLevel || !effectiveFrame)
447 return; 450 return;
448 451
449 // Use the current local frame's client; the embedder doesn't 452 // Use the current local frame's client; the embedder doesn't distinguish
450 // distinguish mixed content signals from different frames on the 453 // mixed content signals from different frames on the same page.
451 // same page.
452 FrameLoaderClient* client = frame->loader().client(); 454 FrameLoaderClient* client = frame->loader().client();
453 bool strictMixedContentCheckingForPlugin = 455 bool strictMixedContentCheckingForPlugin =
454 effectiveFrame->settings() && 456 effectiveFrame->settings() &&
455 effectiveFrame->settings()->strictMixedContentCheckingForPlugin(); 457 effectiveFrame->settings()->strictMixedContentCheckingForPlugin();
456 WebMixedContent::ContextType contextType = 458 WebMixedContent::ContextType contextType =
457 WebMixedContent::contextTypeFromRequestContext( 459 WebMixedContent::contextTypeFromRequestContext(
458 requestContext, strictMixedContentCheckingForPlugin); 460 requestContext, strictMixedContentCheckingForPlugin);
459 if (contextType == WebMixedContent::ContextType::Blockable) { 461 if (contextType == WebMixedContent::ContextType::Blockable) {
460 client->didRunContentWithCertificateErrors(response.url()); 462 client->didRunContentWithCertificateErrors(response.url());
461 } else { 463 } else {
462 // contextTypeFromRequestContext() never returns NotMixedContent (it 464 // contextTypeFromRequestContext() never returns NotMixedContent (it
463 // computes the type of mixed content, given that the content is 465 // computes the type of mixed content, given that the content is mixed).
464 // mixed).
465 DCHECK_NE(contextType, WebMixedContent::ContextType::NotMixedContent); 466 DCHECK_NE(contextType, WebMixedContent::ContextType::NotMixedContent);
466 client->didDisplayContentWithCertificateErrors(response.url()); 467 client->didDisplayContentWithCertificateErrors(response.url());
467 } 468 }
468 } 469 }
469 470
470 WebMixedContent::ContextType MixedContentChecker::contextTypeForInspector( 471 WebMixedContent::ContextType MixedContentChecker::contextTypeForInspector(
471 LocalFrame* frame, 472 LocalFrame* frame,
472 const ResourceRequest& request) { 473 const ResourceRequest& request) {
473 Frame* effectiveFrame = 474 Frame* effectiveFrame =
474 effectiveFrameForFrameType(frame, request.frameType()); 475 effectiveFrameForFrameType(frame, request.frameType());
475 476
476 Frame* mixedFrame = inWhichFrameIsContentMixed( 477 Frame* mixedFrame = inWhichFrameIsContentMixed(
477 effectiveFrame, request.frameType(), request.url()); 478 effectiveFrame, request.frameType(), request.url());
478 if (!mixedFrame) 479 if (!mixedFrame)
479 return WebMixedContent::ContextType::NotMixedContent; 480 return WebMixedContent::ContextType::NotMixedContent;
480 481
481 // See comment in shouldBlockFetch() about loading the main resource of a subf rame. 482 // See comment in shouldBlockFetch() about loading the main resource of a
483 // subframe.
482 if (request.frameType() == WebURLRequest::FrameTypeNested && 484 if (request.frameType() == WebURLRequest::FrameTypeNested &&
483 !SchemeRegistry::shouldTreatURLSchemeAsCORSEnabled( 485 !SchemeRegistry::shouldTreatURLSchemeAsCORSEnabled(
484 request.url().protocol())) { 486 request.url().protocol())) {
485 return WebMixedContent::ContextType::OptionallyBlockable; 487 return WebMixedContent::ContextType::OptionallyBlockable;
486 } 488 }
487 489
488 bool strictMixedContentCheckingForPlugin = 490 bool strictMixedContentCheckingForPlugin =
489 mixedFrame->settings() && 491 mixedFrame->settings() &&
490 mixedFrame->settings()->strictMixedContentCheckingForPlugin(); 492 mixedFrame->settings()->strictMixedContentCheckingForPlugin();
491 return WebMixedContent::contextTypeFromRequestContext( 493 return WebMixedContent::contextTypeFromRequestContext(
492 request.requestContext(), strictMixedContentCheckingForPlugin); 494 request.requestContext(), strictMixedContentCheckingForPlugin);
493 } 495 }
494 496
495 } // namespace blink 497 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/loader/LinkLoaderTest.cpp ('k') | third_party/WebKit/Source/core/loader/NavigationScheduler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698