Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(77)

Side by Side Diff: extensions/browser/api/web_request/web_request_resource_type.cc

Issue 2700553002: Introduce WebRequestResourceType. (Closed)
Patch Set: Address comments; add 'media'; make type mapping consistent. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 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 #include "extensions/browser/api/web_request/web_request_resource_type.h"
6
7 #include "base/logging.h"
8 #include "base/numerics/safe_conversions.h"
9 #include "content/public/browser/resource_request_info.h"
10 #include "net/url_request/url_request.h"
11
12 namespace {
13
14 constexpr const char* const kResourceTypeStrings[] = {
15 "main_frame", "sub_frame", "stylesheet", "script",
16 "image", "font", "object", "xmlhttprequest",
17 "ping", "media", "websocket", "other",
18 };
19
20 constexpr size_t kResourceTypeStringsLength = arraysize(kResourceTypeStrings);
21
22 static_assert(kResourceTypeStringsLength ==
23 base::strict_cast<size_t>(
24 extensions::WebRequestResourceType::UNDEFINED),
25 "Each WebRequestResourceType should have a string value.");
26
27 } // namespace
28
29 namespace extensions {
30
31 WebRequestResourceType ToWebRequestResourceType(content::ResourceType type) {
32 switch (type) {
33 case content::RESOURCE_TYPE_MAIN_FRAME:
34 return WebRequestResourceType::MAIN_FRAME;
35 case content::RESOURCE_TYPE_SUB_FRAME:
36 return WebRequestResourceType::SUB_FRAME;
37 case content::RESOURCE_TYPE_STYLESHEET:
38 return WebRequestResourceType::STYLESHEET;
39 case content::RESOURCE_TYPE_SCRIPT:
40 return WebRequestResourceType::SCRIPT;
41 case content::RESOURCE_TYPE_IMAGE:
42 return WebRequestResourceType::IMAGE;
43 case content::RESOURCE_TYPE_FONT_RESOURCE:
44 return WebRequestResourceType::FONT;
45 case content::RESOURCE_TYPE_SUB_RESOURCE:
pkalinnikov 2017/02/16 19:43:38 Devlin, Takeshi: Do you feel this (and PREFETCH, C
46 return WebRequestResourceType::OTHER;
47 case content::RESOURCE_TYPE_OBJECT:
48 return WebRequestResourceType::OBJECT;
49 case content::RESOURCE_TYPE_MEDIA:
50 return WebRequestResourceType::MEDIA;
51 case content::RESOURCE_TYPE_WORKER:
52 case content::RESOURCE_TYPE_SHARED_WORKER:
53 return WebRequestResourceType::SCRIPT;
54 case content::RESOURCE_TYPE_PREFETCH:
55 return WebRequestResourceType::OTHER;
56 case content::RESOURCE_TYPE_FAVICON:
57 return WebRequestResourceType::IMAGE;
58 case content::RESOURCE_TYPE_XHR:
59 return WebRequestResourceType::XHR;
60 case content::RESOURCE_TYPE_PING:
61 return WebRequestResourceType::PING;
62 case content::RESOURCE_TYPE_SERVICE_WORKER:
63 return WebRequestResourceType::SCRIPT;
64 case content::RESOURCE_TYPE_CSP_REPORT:
65 return WebRequestResourceType::OTHER;
66 case content::RESOURCE_TYPE_PLUGIN_RESOURCE:
67 return WebRequestResourceType::OBJECT;
68 case content::RESOURCE_TYPE_LAST_TYPE:
pkalinnikov 2017/02/16 19:43:38 Should LAST_TYPE be UNDEFINED or OTHER?
69 return WebRequestResourceType::OTHER;
70 }
71 NOTREACHED();
72 return WebRequestResourceType::UNDEFINED;
73 }
74
75 WebRequestResourceType GetWebRequestResourceType(
76 const net::URLRequest* request) {
77 DCHECK(request);
78 if (request->url().SchemeIsWSOrWSS())
79 return WebRequestResourceType::WEB_SOCKET;
80 const auto* info = content::ResourceRequestInfo::ForRequest(request);
81 return info ? ToWebRequestResourceType(info->GetResourceType())
82 : WebRequestResourceType::UNDEFINED;
83 }
84
85 const char* WebRequestResourceTypeToString(WebRequestResourceType type) {
86 size_t index = base::strict_cast<size_t>(type);
87 DCHECK_LE(index, kResourceTypeStringsLength);
pkalinnikov 2017/02/16 19:43:38 Oups, DCHECK_LT.
pkalinnikov 2017/02/16 21:24:46 Done.
88 return kResourceTypeStrings[index];
89 }
90
91 WebRequestResourceType ParseWebRequestResourceType(base::StringPiece text) {
92 for (size_t i = 0; i < kResourceTypeStringsLength; ++i) {
93 if (text == kResourceTypeStrings[i])
94 return static_cast<WebRequestResourceType>(i);
95 }
96 return WebRequestResourceType::UNDEFINED;
97 }
98
99 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698