OLD | NEW |
---|---|
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/data_use_measurement/content/content_url_request_classifier .h" | 5 #include "components/data_use_measurement/content/content_url_request_classifier .h" |
6 | 6 |
7 #include "base/strings/string_util.h" | |
7 #include "content/public/browser/resource_request_info.h" | 8 #include "content/public/browser/resource_request_info.h" |
9 #include "net/http/http_response_headers.h" | |
8 #include "net/url_request/url_request.h" | 10 #include "net/url_request/url_request.h" |
9 | 11 |
10 namespace data_use_measurement { | 12 namespace data_use_measurement { |
11 | 13 |
12 bool IsUserRequest(const net::URLRequest& request) { | 14 bool IsUserRequest(const net::URLRequest& request) { |
13 // The presence of ResourecRequestInfo in |request| implies that this request | 15 // The presence of ResourecRequestInfo in |request| implies that this request |
14 // was created for a content::WebContents. For now we could add a condition to | 16 // was created for a content::WebContents. For now we could add a condition to |
15 // check ProcessType in info is content::PROCESS_TYPE_RENDERER, but it won't | 17 // check ProcessType in info is content::PROCESS_TYPE_RENDERER, but it won't |
16 // be compatible with upcoming PlzNavigate architecture. So just existence of | 18 // be compatible with upcoming PlzNavigate architecture. So just existence of |
17 // ResourceRequestInfo is verified, and the current check should be compatible | 19 // ResourceRequestInfo is verified, and the current check should be compatible |
18 // with upcoming changes in PlzNavigate. | 20 // with upcoming changes in PlzNavigate. |
19 // TODO(rajendrant): Verify this condition for different use cases. See | 21 // TODO(rajendrant): Verify this condition for different use cases. See |
20 // crbug.com/626063. | 22 // crbug.com/626063. |
21 return content::ResourceRequestInfo::ForRequest(&request) != nullptr; | 23 return content::ResourceRequestInfo::ForRequest(&request) != nullptr; |
22 } | 24 } |
23 | 25 |
24 bool ContentURLRequestClassifier::IsUserRequest( | 26 bool ContentURLRequestClassifier::IsUserRequest( |
25 const net::URLRequest& request) const { | 27 const net::URLRequest& request) const { |
26 return data_use_measurement::IsUserRequest(request); | 28 return data_use_measurement::IsUserRequest(request); |
27 } | 29 } |
28 | 30 |
31 DataUseUserData::DataUseContentType ContentURLRequestClassifier::GetContentType( | |
32 const net::URLRequest& request, | |
33 const net::HttpResponseHeaders& response_headers) const { | |
34 const content::ResourceRequestInfo* request_info = | |
35 content::ResourceRequestInfo::ForRequest(&request); | |
RyanSturm
2016/12/22 20:00:42
include ResourceRequestInfo, ResourceType, string
Raj
2016/12/22 21:28:04
Done.
| |
36 std::string mime_type; | |
37 if (response_headers.GetMimeType(&mime_type)) { | |
38 if (mime_type == "text/html" && request_info && | |
39 request_info->GetResourceType() == | |
40 content::ResourceType::RESOURCE_TYPE_MAIN_FRAME) { | |
41 return DataUseUserData::MAIN_FRAME_HTML; | |
42 } else if (mime_type == "text/html") { | |
43 return DataUseUserData::NON_MAIN_FRAME_HTML; | |
44 } else if (mime_type == "text/css") { | |
45 return DataUseUserData::CSS; | |
46 } else if (base::StartsWith(mime_type, "image/", | |
47 base::CompareCase::SENSITIVE)) { | |
48 return DataUseUserData::IMAGE; | |
49 } else if (base::EndsWith(mime_type, "javascript", | |
50 base::CompareCase::SENSITIVE) || | |
51 base::EndsWith(mime_type, "ecmascript", | |
52 base::CompareCase::SENSITIVE)) { | |
53 return DataUseUserData::JAVASCRIPT; | |
54 } else if (mime_type.find("font") != std::string::npos) { | |
55 return DataUseUserData::FONT; | |
56 } else if (base::StartsWith(mime_type, "audio/", | |
57 base::CompareCase::SENSITIVE)) { | |
58 return DataUseUserData::AUDIO; | |
59 } else if (base::StartsWith(mime_type, "video/", | |
60 base::CompareCase::SENSITIVE)) { | |
61 return DataUseUserData::VIDEO; | |
62 } | |
63 } | |
64 return DataUseUserData::OTHER; | |
65 } | |
66 | |
29 } // namespace data_use_measurement | 67 } // namespace data_use_measurement |
OLD | NEW |