15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#ifndef WEBKIT_COMMON_RESOURCE_TYPE_H__ 6ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#define WEBKIT_COMMON_RESOURCE_TYPE_H__ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 9868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "third_party/WebKit/public/platform/WebURLRequest.h" 10ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "webkit/common/webkit_common_export.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ResourceType { 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Used in histograms, so please add new types at the end, and rename unused 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // entries to RESOURCETYPE_UNUSED_0, etc... 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum Type { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MAIN_FRAME = 0, // top level page 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SUB_FRAME, // frame or iframe 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) STYLESHEET, // a CSS stylesheet 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SCRIPT, // an external script 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IMAGE, // an image (jpg/gif/png/etc) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FONT_RESOURCE, // a font 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SUB_RESOURCE, // an "other" subresource. 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OBJECT, // an object (or embed) tag for a plugin, 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // or a resource that a plugin requested. 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MEDIA, // a media resource. 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WORKER, // the main resource of a dedicated worker. 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SHARED_WORKER, // the main resource of a shared worker. 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PREFETCH, // an explicitly requested prefetch 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FAVICON, // a favicon 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XHR, // a XMLHttpRequest 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) PING, // a ping request for <a ping> 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LAST_TYPE // Place holder so we don't need to change ValidType 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // everytime. 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool ValidType(int32 type) { 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return type >= MAIN_FRAME && type < LAST_TYPE; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static Type FromInt(int32 type) { 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return static_cast<Type>(type); 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 45ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch WEBKIT_COMMON_EXPORT static Type FromTargetType( 46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebURLRequest::TargetType type); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool IsFrame(ResourceType::Type type) { 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return type == MAIN_FRAME || type == SUB_FRAME; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool IsSharedWorker(ResourceType::Type type) { 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return type == SHARED_WORKER; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool IsSubresource(ResourceType::Type type) { 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return type == STYLESHEET || 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) type == SCRIPT || 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) type == IMAGE || 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) type == FONT_RESOURCE || 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) type == SUB_RESOURCE || 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) type == WORKER || 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) type == XHR; 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Don't instantiate this class. 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ResourceType(); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~ResourceType(); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 71ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#endif // WEBKIT_COMMON_RESOURCE_TYPE_H__ 72