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

Side by Side Diff: components/data_use_measurement/content/content_url_request_classifier.cc

Issue 2595503002: Record the data use by content type (Closed)
Patch Set: Removed loadflags Created 3 years, 12 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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698