1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef WEBKIT_GLUE_RESOURCE_TYPE_H__
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define WEBKIT_GLUE_RESOURCE_TYPE_H__
7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/basictypes.h"
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ResourceType {
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  enum Type {
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    MAIN_FRAME = 0,  // top level page
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    SUB_FRAME,       // frame or iframe
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    STYLESHEET,      // a CSS stylesheet
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    SCRIPT,          // an external script
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    IMAGE,           // an image (jpg/gif/png/etc)
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    FONT_RESOURCE,   // a font
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    SUB_RESOURCE,    // an "other" subresource.
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    OBJECT,          // an object (or embed) tag for a plugin,
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     // or a resource that a plugin requested.
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    MEDIA,           // a media resource.
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    WORKER,          // the main resource of a dedicated worker.
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    SHARED_WORKER,   // the main resource of a shared worker.
253345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    PREFETCH,        // an explicitly requested prefetch
26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    FAVICON,         // a favicon
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    LAST_TYPE        // Place holder so we don't need to change ValidType
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     // everytime.
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  };
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  static bool ValidType(int32 type) {
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    return type >= MAIN_FRAME && type < LAST_TYPE;
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  static Type FromInt(int32 type) {
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    return static_cast<Type>(type);
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  static bool IsFrame(ResourceType::Type type) {
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    return type == MAIN_FRAME || type == SUB_FRAME;
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  static bool IsSharedWorker(ResourceType::Type type) {
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    return type == SHARED_WORKER;
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  static bool IsSubresource(ResourceType::Type type) {
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    return type == STYLESHEET ||
49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch           type == SCRIPT ||
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch           type == IMAGE ||
51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch           type == FONT_RESOURCE ||
52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch           type == SUB_RESOURCE ||
53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch           type == WORKER;
54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private:
57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Don't instantiate this class.
58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ResourceType();
59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ~ResourceType();
60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif  // WEBKIT_GLUE_RESOURCE_TYPE_H__
62