| Index: trunk/Source/platform/exported/WebURLRequest.cpp
|
| ===================================================================
|
| --- trunk/Source/platform/exported/WebURLRequest.cpp (revision 179161)
|
| +++ trunk/Source/platform/exported/WebURLRequest.cpp (working copy)
|
| @@ -356,4 +356,168 @@
|
| m_private = p;
|
| }
|
|
|
| +WebURLRequest::RequestContext WebURLRequest::requestContextFromTargetType(WebURLRequest::TargetType targetType)
|
| +{
|
| + switch (targetType) {
|
| + case TargetIsMainFrame:
|
| + return RequestContextHyperlink; // FIXME: Fetch defines the target separately from the cause. Need to work that out here.
|
| + case TargetIsSubframe:
|
| + return RequestContextIframe;
|
| + case TargetIsSubresource:
|
| + return RequestContextSubresource;
|
| + case TargetIsStyleSheet:
|
| + return RequestContextStyle;
|
| + case TargetIsScript:
|
| + return RequestContextScript;
|
| + case TargetIsFontResource:
|
| + return RequestContextFont;
|
| + case TargetIsImage:
|
| + return RequestContextImage;
|
| + case TargetIsObject:
|
| + return RequestContextObject;
|
| + case TargetIsMedia:
|
| + // FIXME: Split this out.
|
| + return RequestContextVideo;
|
| + case TargetIsWorker:
|
| + return RequestContextWorker;
|
| + case TargetIsSharedWorker:
|
| + return RequestContextSharedWorker;
|
| + case TargetIsPrefetch:
|
| + return RequestContextPrefetch;
|
| + case TargetIsFavicon:
|
| + return RequestContextFavicon;
|
| + case TargetIsXHR:
|
| + return RequestContextXMLHttpRequest;
|
| + case TargetIsTextTrack:
|
| + return RequestContextTrack;
|
| + case TargetIsPing:
|
| + return RequestContextPing;
|
| + case TargetIsServiceWorker:
|
| + return RequestContextServiceWorker;
|
| + case TargetIsUnspecified:
|
| + return RequestContextUnspecified;
|
| + }
|
| + ASSERT_NOT_REACHED();
|
| + return RequestContextUnspecified;
|
| +}
|
| +
|
| +WebURLRequest::TargetType WebURLRequest::targetTypeFromRequestContextAndFrameType(WebURLRequest::RequestContext requestContext, WebURLRequest::FrameType frameType)
|
| +{
|
| + if (frameType != FrameTypeNone) {
|
| + ASSERT(requestContext == RequestContextForm || requestContext == RequestContextFrame || requestContext == RequestContextHyperlink || requestContext == RequestContextIframe || requestContext == RequestContextInternal || requestContext == RequestContextLocation);
|
| + if (frameType == FrameTypeTopLevel || frameType == FrameTypeAuxiliary)
|
| + return TargetIsMainFrame;
|
| + if (frameType == FrameTypeNested)
|
| + return TargetIsSubframe;
|
| + ASSERT_NOT_REACHED();
|
| + return TargetIsUnspecified;
|
| + }
|
| +
|
| + switch (requestContext) {
|
| + // Favicon
|
| + case RequestContextFavicon:
|
| + return TargetIsFavicon;
|
| +
|
| + // Font
|
| + case RequestContextFont:
|
| + return TargetIsFontResource;
|
| +
|
| + // Image
|
| + case RequestContextImage:
|
| + return TargetIsImage;
|
| +
|
| + // Media
|
| + case RequestContextAudio:
|
| + case RequestContextVideo:
|
| + return TargetIsMedia;
|
| +
|
| + // Object
|
| + case RequestContextEmbed:
|
| + case RequestContextObject:
|
| + return TargetIsObject;
|
| +
|
| + // Ping
|
| + case RequestContextBeacon:
|
| + case RequestContextCSPReport:
|
| + case RequestContextPing:
|
| + return TargetIsPing;
|
| +
|
| + // Prefetch
|
| + case RequestContextPrefetch:
|
| + return TargetIsPrefetch;
|
| +
|
| + // Script
|
| + case RequestContextScript:
|
| + return TargetIsScript;
|
| +
|
| + // Style
|
| + case RequestContextXSLT:
|
| + case RequestContextStyle:
|
| + return TargetIsStyleSheet;
|
| +
|
| +
|
| + // Subresource
|
| + case RequestContextDownload:
|
| + case RequestContextManifest:
|
| + case RequestContextSubresource:
|
| + case RequestContextPlugin:
|
| + return TargetIsSubresource;
|
| +
|
| + // TextTrack
|
| + case RequestContextTrack:
|
| + return TargetIsTextTrack;
|
| +
|
| + // Workers
|
| + case RequestContextServiceWorker:
|
| + return TargetIsServiceWorker;
|
| + case RequestContextSharedWorker:
|
| + return TargetIsSharedWorker;
|
| + case RequestContextWorker:
|
| + return TargetIsWorker;
|
| +
|
| + // Unspecified
|
| + case RequestContextInternal:
|
| + case RequestContextUnspecified:
|
| + return TargetIsUnspecified;
|
| +
|
| + // XHR
|
| + case RequestContextEventSource:
|
| + case RequestContextFetch:
|
| + case RequestContextXMLHttpRequest:
|
| + return TargetIsXHR;
|
| +
|
| + // These should be handled by the FrameType checks at the top of the function.
|
| + // Main Frame
|
| + case RequestContextForm:
|
| + case RequestContextHyperlink:
|
| + case RequestContextLocation:
|
| + case RequestContextFrame:
|
| + case RequestContextIframe:
|
| + ASSERT_NOT_REACHED();
|
| + return TargetIsUnspecified;
|
| + }
|
| + ASSERT_NOT_REACHED();
|
| + return TargetIsUnspecified;
|
| +}
|
| +
|
| +// FIXME: Drop these two methods once embedders are updated to use RequestContexts.
|
| +WebURLRequest::TargetType WebURLRequest::targetType() const
|
| +{
|
| + // FIXME: Temporary special case until downstream chromium.org knows of the new TargetTypes.
|
| + TargetType targetType = WebURLRequest::targetTypeFromRequestContextAndFrameType(requestContext(), frameType());
|
| + if (targetType == TargetIsTextTrack || targetType == TargetIsUnspecified)
|
| + return TargetIsSubresource;
|
| + return targetType;
|
| +}
|
| +
|
| +void WebURLRequest::setTargetType(TargetType targetType)
|
| +{
|
| + setRequestContext(WebURLRequest::requestContextFromTargetType(targetType));
|
| + if (targetType == TargetIsMainFrame)
|
| + setFrameType(FrameTypeTopLevel);
|
| + if (targetType == TargetIsSubframe)
|
| + setFrameType(FrameTypeNested);
|
| +}
|
| +
|
| +
|
| } // namespace blink
|
|
|