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

Side by Side Diff: chrome/browser/supervised_user/experimental/supervised_user_async_url_checker.cc

Issue 1878143002: Convert //chrome/browser/supervised_user from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "chrome/browser/supervised_user/experimental/supervised_user_async_url_ checker.h" 5 #include "chrome/browser/supervised_user/experimental/supervised_user_async_url_ checker.h"
6 6
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 27 matching lines...) Expand all
38 const size_t kDefaultCacheSize = 1000; 38 const size_t kDefaultCacheSize = 1000;
39 const size_t kDefaultCacheTimeoutSeconds = 3600; 39 const size_t kDefaultCacheTimeoutSeconds = 3600;
40 40
41 // Builds the POST data for SafeSearch API requests. 41 // Builds the POST data for SafeSearch API requests.
42 std::string BuildRequestData(const std::string& api_key, const GURL& url) { 42 std::string BuildRequestData(const std::string& api_key, const GURL& url) {
43 std::string query = net::EscapeQueryParamValue(url.spec(), true); 43 std::string query = net::EscapeQueryParamValue(url.spec(), true);
44 return base::StringPrintf(kDataFormat, api_key.c_str(), query.c_str()); 44 return base::StringPrintf(kDataFormat, api_key.c_str(), query.c_str());
45 } 45 }
46 46
47 // Creates a URLFetcher to call the SafeSearch API for |url|. 47 // Creates a URLFetcher to call the SafeSearch API for |url|.
48 scoped_ptr<net::URLFetcher> CreateFetcher(URLFetcherDelegate* delegate, 48 std::unique_ptr<net::URLFetcher> CreateFetcher(URLFetcherDelegate* delegate,
49 URLRequestContextGetter* context, 49 URLRequestContextGetter* context,
50 const std::string& api_key, 50 const std::string& api_key,
51 const GURL& url) { 51 const GURL& url) {
52 scoped_ptr<net::URLFetcher> fetcher = URLFetcher::Create( 52 std::unique_ptr<net::URLFetcher> fetcher =
53 0, GURL(kApiUrl), URLFetcher::POST, delegate); 53 URLFetcher::Create(0, GURL(kApiUrl), URLFetcher::POST, delegate);
54 fetcher->SetUploadData(kDataContentType, BuildRequestData(api_key, url)); 54 fetcher->SetUploadData(kDataContentType, BuildRequestData(api_key, url));
55 fetcher->SetRequestContext(context); 55 fetcher->SetRequestContext(context);
56 fetcher->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES | 56 fetcher->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES |
57 net::LOAD_DO_NOT_SAVE_COOKIES); 57 net::LOAD_DO_NOT_SAVE_COOKIES);
58 return fetcher; 58 return fetcher;
59 } 59 }
60 60
61 // Parses a SafeSearch API |response| and stores the result in |is_porn|. 61 // Parses a SafeSearch API |response| and stores the result in |is_porn|.
62 // On errors, returns false and doesn't set |is_porn|. 62 // On errors, returns false and doesn't set |is_porn|.
63 bool ParseResponse(const std::string& response, bool* is_porn) { 63 bool ParseResponse(const std::string& response, bool* is_porn) {
64 scoped_ptr<base::Value> value = base::JSONReader::Read(response); 64 std::unique_ptr<base::Value> value = base::JSONReader::Read(response);
65 const base::DictionaryValue* dict = nullptr; 65 const base::DictionaryValue* dict = nullptr;
66 if (!value || !value->GetAsDictionary(&dict)) { 66 if (!value || !value->GetAsDictionary(&dict)) {
67 DLOG(WARNING) << "ParseResponse failed to parse global dictionary"; 67 DLOG(WARNING) << "ParseResponse failed to parse global dictionary";
68 return false; 68 return false;
69 } 69 }
70 const base::ListValue* classifications_list = nullptr; 70 const base::ListValue* classifications_list = nullptr;
71 if (!dict->GetList("classifications", &classifications_list)) { 71 if (!dict->GetList("classifications", &classifications_list)) {
72 DLOG(WARNING) << "ParseResponse failed to parse classifications list"; 72 DLOG(WARNING) << "ParseResponse failed to parse classifications list";
73 return false; 73 return false;
74 } 74 }
75 if (classifications_list->GetSize() != 1) { 75 if (classifications_list->GetSize() != 1) {
76 DLOG(WARNING) << "ParseResponse expected exactly one result"; 76 DLOG(WARNING) << "ParseResponse expected exactly one result";
77 return false; 77 return false;
78 } 78 }
79 const base::DictionaryValue* classification_dict = nullptr; 79 const base::DictionaryValue* classification_dict = nullptr;
80 if (!classifications_list->GetDictionary(0, &classification_dict)) { 80 if (!classifications_list->GetDictionary(0, &classification_dict)) {
81 DLOG(WARNING) << "ParseResponse failed to parse classification dict"; 81 DLOG(WARNING) << "ParseResponse failed to parse classification dict";
82 return false; 82 return false;
83 } 83 }
84 classification_dict->GetBoolean("pornography", is_porn); 84 classification_dict->GetBoolean("pornography", is_porn);
85 return true; 85 return true;
86 } 86 }
87 87
88 } // namespace 88 } // namespace
89 89
90 struct SupervisedUserAsyncURLChecker::Check { 90 struct SupervisedUserAsyncURLChecker::Check {
91 Check(const GURL& url, 91 Check(const GURL& url,
92 scoped_ptr<net::URLFetcher> fetcher, 92 std::unique_ptr<net::URLFetcher> fetcher,
93 const CheckCallback& callback); 93 const CheckCallback& callback);
94 ~Check(); 94 ~Check();
95 95
96 GURL url; 96 GURL url;
97 scoped_ptr<net::URLFetcher> fetcher; 97 std::unique_ptr<net::URLFetcher> fetcher;
98 std::vector<CheckCallback> callbacks; 98 std::vector<CheckCallback> callbacks;
99 base::TimeTicks start_time; 99 base::TimeTicks start_time;
100 }; 100 };
101 101
102 SupervisedUserAsyncURLChecker::Check::Check(const GURL& url, 102 SupervisedUserAsyncURLChecker::Check::Check(
103 scoped_ptr<net::URLFetcher> fetcher, 103 const GURL& url,
104 const CheckCallback& callback) 104 std::unique_ptr<net::URLFetcher> fetcher,
105 const CheckCallback& callback)
105 : url(url), 106 : url(url),
106 fetcher(std::move(fetcher)), 107 fetcher(std::move(fetcher)),
107 callbacks(1, callback), 108 callbacks(1, callback),
108 start_time(base::TimeTicks::Now()) {} 109 start_time(base::TimeTicks::Now()) {}
109 110
110 SupervisedUserAsyncURLChecker::Check::~Check() {} 111 SupervisedUserAsyncURLChecker::Check::~Check() {}
111 112
112 SupervisedUserAsyncURLChecker::CheckResult::CheckResult( 113 SupervisedUserAsyncURLChecker::CheckResult::CheckResult(
113 SupervisedUserURLFilter::FilteringBehavior behavior, 114 SupervisedUserURLFilter::FilteringBehavior behavior,
114 bool uncertain) 115 bool uncertain)
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 for (Check* check : checks_in_progress_) { 170 for (Check* check : checks_in_progress_) {
170 if (check->url == url) { 171 if (check->url == url) {
171 DVLOG(1) << "Adding to pending check for " << url.spec(); 172 DVLOG(1) << "Adding to pending check for " << url.spec();
172 check->callbacks.push_back(callback); 173 check->callbacks.push_back(callback);
173 return false; 174 return false;
174 } 175 }
175 } 176 }
176 177
177 DVLOG(1) << "Checking URL " << url; 178 DVLOG(1) << "Checking URL " << url;
178 std::string api_key = google_apis::GetAPIKey(); 179 std::string api_key = google_apis::GetAPIKey();
179 scoped_ptr<URLFetcher> fetcher(CreateFetcher(this, context_, api_key, url)); 180 std::unique_ptr<URLFetcher> fetcher(
181 CreateFetcher(this, context_, api_key, url));
180 fetcher->Start(); 182 fetcher->Start();
181 checks_in_progress_.push_back(new Check(url, std::move(fetcher), callback)); 183 checks_in_progress_.push_back(new Check(url, std::move(fetcher), callback));
182 return false; 184 return false;
183 } 185 }
184 186
185 void SupervisedUserAsyncURLChecker::OnURLFetchComplete( 187 void SupervisedUserAsyncURLChecker::OnURLFetchComplete(
186 const net::URLFetcher* source) { 188 const net::URLFetcher* source) {
187 ScopedVector<Check>::iterator it = checks_in_progress_.begin(); 189 ScopedVector<Check>::iterator it = checks_in_progress_.begin();
188 while (it != checks_in_progress_.end()) { 190 while (it != checks_in_progress_.end()) {
189 if (source == (*it)->fetcher.get()) 191 if (source == (*it)->fetcher.get())
(...skipping 21 matching lines...) Expand all
211 213
212 UMA_HISTOGRAM_TIMES("ManagedUsers.SafeSitesDelay", 214 UMA_HISTOGRAM_TIMES("ManagedUsers.SafeSitesDelay",
213 base::TimeTicks::Now() - check->start_time); 215 base::TimeTicks::Now() - check->start_time);
214 216
215 cache_.Put(check->url, CheckResult(behavior, uncertain)); 217 cache_.Put(check->url, CheckResult(behavior, uncertain));
216 218
217 for (size_t i = 0; i < check->callbacks.size(); i++) 219 for (size_t i = 0; i < check->callbacks.size(); i++)
218 check->callbacks[i].Run(check->url, behavior, uncertain); 220 check->callbacks[i].Run(check->url, behavior, uncertain);
219 checks_in_progress_.erase(it); 221 checks_in_progress_.erase(it);
220 } 222 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698