Commit 88255944 authored by kbr@chromium.org's avatar kbr@chromium.org

Revert 179125 "Drop the 'WebURLRequest::TargetType' enum."

Believe changes related to this introduced flakiness again in the
browser. See Issue 390497.

> Drop the 'WebURLRequest::TargetType' enum.
> 
> We no longer use this enum in Chromium; everything has been ported over
> to using '::RequestContext' and '::FrameType', so we can safely remove
> both the enum and the translation machinery in '::setTargetType'.
> 
> BUG=390497
> 
> Review URL: https://codereview.chromium.org/417483002

TBR=mkwst@chromium.org

Review URL: https://codereview.chromium.org/422343003

git-svn-id: svn://svn.chromium.org/blink/trunk@179162 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 0844102c
...@@ -356,4 +356,168 @@ void WebURLRequest::assign(WebURLRequestPrivate* p) ...@@ -356,4 +356,168 @@ void WebURLRequest::assign(WebURLRequestPrivate* p)
m_private = p; 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 } // namespace blink
...@@ -67,7 +67,30 @@ public: ...@@ -67,7 +67,30 @@ public:
PriorityVeryHigh, PriorityVeryHigh,
}; };
enum TargetType {
TargetIsMainFrame = 0,
TargetIsSubframe = 1,
TargetIsSubresource = 2,
TargetIsStyleSheet = 3,
TargetIsScript = 4,
TargetIsFontResource = 5,
TargetIsImage = 6,
TargetIsObject = 7,
TargetIsMedia = 8,
TargetIsWorker = 9,
TargetIsSharedWorker = 10,
TargetIsPrefetch = 11,
TargetIsFavicon = 12,
TargetIsXHR = 13,
TargetIsTextTrack = 14,
TargetIsPing = 15,
TargetIsServiceWorker = 16,
TargetIsUnspecified = 17,
};
// Corresponds to Fetch's "context": http://fetch.spec.whatwg.org/#concept-request-context // Corresponds to Fetch's "context": http://fetch.spec.whatwg.org/#concept-request-context
//
// FIXME: Drop the TargetType enum once embedders are updated upstream.
enum RequestContext { enum RequestContext {
RequestContextUnspecified = 0, RequestContextUnspecified = 0,
RequestContextInternal, // FIXME: This isn't part of Fetch. It should be. RequestContextInternal, // FIXME: This isn't part of Fetch. It should be.
...@@ -177,6 +200,10 @@ public: ...@@ -177,6 +200,10 @@ public:
BLINK_PLATFORM_EXPORT bool reportRawHeaders() const; BLINK_PLATFORM_EXPORT bool reportRawHeaders() const;
BLINK_PLATFORM_EXPORT void setReportRawHeaders(bool); BLINK_PLATFORM_EXPORT void setReportRawHeaders(bool);
// FIXME: Remove these once content/ and net/ are updated.
BLINK_PLATFORM_EXPORT TargetType targetType() const;
BLINK_PLATFORM_EXPORT void setTargetType(TargetType);
BLINK_PLATFORM_EXPORT RequestContext requestContext() const; BLINK_PLATFORM_EXPORT RequestContext requestContext() const;
BLINK_PLATFORM_EXPORT void setRequestContext(RequestContext); BLINK_PLATFORM_EXPORT void setRequestContext(RequestContext);
...@@ -229,6 +256,10 @@ public: ...@@ -229,6 +256,10 @@ public:
BLINK_PLATFORM_EXPORT const blink::ResourceRequest& toResourceRequest() const; BLINK_PLATFORM_EXPORT const blink::ResourceRequest& toResourceRequest() const;
#endif #endif
// FIXME: Drop these once we replace TargetType upstream.
static RequestContext requestContextFromTargetType(TargetType);
static TargetType targetTypeFromRequestContextAndFrameType(RequestContext, FrameType);
protected: protected:
BLINK_PLATFORM_EXPORT void assign(WebURLRequestPrivate*); BLINK_PLATFORM_EXPORT void assign(WebURLRequestPrivate*);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment