Home | History | Annotate | Download | only in common
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef WEBKIT_COMMON_RESOURCE_TYPE_H__
      6 #define WEBKIT_COMMON_RESOURCE_TYPE_H__
      7 
      8 #include "base/basictypes.h"
      9 #include "third_party/WebKit/public/platform/WebURLRequest.h"
     10 #include "webkit/common/webkit_common_export.h"
     11 
     12 class ResourceType {
     13  public:
     14   // Used in histograms, so please add new types at the end, and rename unused
     15   // entries to RESOURCETYPE_UNUSED_0, etc...
     16   enum Type {
     17     MAIN_FRAME = 0,  // top level page
     18     SUB_FRAME,       // frame or iframe
     19     STYLESHEET,      // a CSS stylesheet
     20     SCRIPT,          // an external script
     21     IMAGE,           // an image (jpg/gif/png/etc)
     22     FONT_RESOURCE,   // a font
     23     SUB_RESOURCE,    // an "other" subresource.
     24     OBJECT,          // an object (or embed) tag for a plugin,
     25                      // or a resource that a plugin requested.
     26     MEDIA,           // a media resource.
     27     WORKER,          // the main resource of a dedicated worker.
     28     SHARED_WORKER,   // the main resource of a shared worker.
     29     PREFETCH,        // an explicitly requested prefetch
     30     FAVICON,         // a favicon
     31     XHR,             // a XMLHttpRequest
     32     PING,            // a ping request for <a ping>
     33     SERVICE_WORKER,  // the main resource of a service worker.
     34     LAST_TYPE        // Place holder so we don't need to change ValidType
     35                      // everytime.
     36   };
     37 
     38   static bool ValidType(int32 type) {
     39     return type >= MAIN_FRAME && type < LAST_TYPE;
     40   }
     41 
     42   static Type FromInt(int32 type) {
     43     return static_cast<Type>(type);
     44   }
     45 
     46   WEBKIT_COMMON_EXPORT static Type FromTargetType(
     47       blink::WebURLRequest::TargetType type);
     48 
     49   static bool IsFrame(ResourceType::Type type) {
     50     return type == MAIN_FRAME || type == SUB_FRAME;
     51   }
     52 
     53   static bool IsSharedWorker(ResourceType::Type type) {
     54     return type == SHARED_WORKER;
     55   }
     56 
     57   static bool IsServiceWorker(ResourceType::Type type) {
     58     return type == SERVICE_WORKER;
     59   }
     60 
     61   static bool IsSubresource(ResourceType::Type type) {
     62     return type == STYLESHEET ||
     63            type == SCRIPT ||
     64            type == IMAGE ||
     65            type == FONT_RESOURCE ||
     66            type == SUB_RESOURCE ||
     67            type == WORKER ||
     68            type == XHR;
     69   }
     70 
     71  private:
     72   // Don't instantiate this class.
     73   ResourceType();
     74   ~ResourceType();
     75 };
     76 #endif  // WEBKIT_COMMON_RESOURCE_TYPE_H__
     77