15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// found in the LICENSE file. 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "content/child/web_url_request_util.h" 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/logging.h" 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "third_party/WebKit/public/platform/WebURLRequest.h" 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)using blink::WebURLRequest; 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace content { 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)ResourceType WebURLRequestToResourceType(const WebURLRequest& request) { 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) WebURLRequest::RequestContext requestContext = request.requestContext(); 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (request.frameType() != WebURLRequest::FrameTypeNone) { 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) DCHECK(requestContext == WebURLRequest::RequestContextForm || 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) requestContext == WebURLRequest::RequestContextFrame || 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) requestContext == WebURLRequest::RequestContextHyperlink || 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) requestContext == WebURLRequest::RequestContextIframe || 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) requestContext == WebURLRequest::RequestContextInternal || 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) requestContext == WebURLRequest::RequestContextLocation); 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (request.frameType() == WebURLRequest::FrameTypeTopLevel || 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) request.frameType() == WebURLRequest::FrameTypeAuxiliary) { 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return RESOURCE_TYPE_MAIN_FRAME; 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (request.frameType() == WebURLRequest::FrameTypeNested) 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return RESOURCE_TYPE_SUB_FRAME; 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NOTREACHED(); 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return RESOURCE_TYPE_SUB_RESOURCE; 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) switch (requestContext) { 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Favicon 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextFavicon: 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return RESOURCE_TYPE_FAVICON; 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Font 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextFont: 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return RESOURCE_TYPE_FONT_RESOURCE; 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Image 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextImage: 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextImageSet: 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return RESOURCE_TYPE_IMAGE; 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Media 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextAudio: 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextVideo: 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return RESOURCE_TYPE_MEDIA; 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Object 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextEmbed: 545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextObject: 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return RESOURCE_TYPE_OBJECT; 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Ping 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextBeacon: 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextCSPReport: 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextPing: 615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return RESOURCE_TYPE_PING; 625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Prefetch 645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextPrefetch: 655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return RESOURCE_TYPE_PREFETCH; 665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Script 685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextImport: 695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextScript: 705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return RESOURCE_TYPE_SCRIPT; 715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Style 735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextXSLT: 745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextStyle: 755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return RESOURCE_TYPE_STYLESHEET; 765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Subresource 785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextDownload: 795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextManifest: 805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextSubresource: 815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextPlugin: 825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return RESOURCE_TYPE_SUB_RESOURCE; 835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // TextTrack 855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextTrack: 865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return RESOURCE_TYPE_MEDIA; 875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Workers 895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextServiceWorker: 905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return RESOURCE_TYPE_SERVICE_WORKER; 915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextSharedWorker: 925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return RESOURCE_TYPE_SHARED_WORKER; 935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextWorker: 945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return RESOURCE_TYPE_WORKER; 955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Unspecified 975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextInternal: 985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextUnspecified: 995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return RESOURCE_TYPE_SUB_RESOURCE; 1005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // XHR 1025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextEventSource: 1035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextFetch: 1045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextXMLHttpRequest: 1055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return RESOURCE_TYPE_XHR; 1065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // These should be handled by the FrameType checks at the top of the 1085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // function. 1095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextForm: 1105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextHyperlink: 1115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextLocation: 1125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextFrame: 1135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case WebURLRequest::RequestContextIframe: 1145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NOTREACHED(); 1155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return RESOURCE_TYPE_SUB_RESOURCE; 1165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) default: 1185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NOTREACHED(); 1195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return RESOURCE_TYPE_SUB_RESOURCE; 1205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 1215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace content 124