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

Side by Side Diff: chromeos/timezone/timezone_provider.cc

Issue 2295663002: Replace deprecated ScopedVector<T> in chromeos::TimeZoneProvider (Closed)
Patch Set: Created 4 years, 3 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
« no previous file with comments | « chromeos/timezone/timezone_provider.h ('k') | chromeos/timezone/timezone_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "chromeos/timezone/timezone_provider.h" 5 #include "chromeos/timezone/timezone_provider.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <iterator> 8 #include <iterator>
9 #include <utility> 9 #include <utility>
10 10
11 #include "base/bind.h" 11 #include "base/bind.h"
12 #include "base/logging.h" 12 #include "base/logging.h"
13 #include "base/memory/ptr_util.h"
13 #include "chromeos/geolocation/geoposition.h" 14 #include "chromeos/geolocation/geoposition.h"
14 #include "net/url_request/url_request_context_getter.h" 15 #include "net/url_request/url_request_context_getter.h"
15 16
16 namespace chromeos { 17 namespace chromeos {
17 18
18 TimeZoneProvider::TimeZoneProvider( 19 TimeZoneProvider::TimeZoneProvider(
19 net::URLRequestContextGetter* url_context_getter, 20 net::URLRequestContextGetter* url_context_getter,
20 const GURL& url) 21 const GURL& url)
21 : url_context_getter_(url_context_getter), url_(url) { 22 : url_context_getter_(url_context_getter), url_(url) {
22 } 23 }
23 24
24 TimeZoneProvider::~TimeZoneProvider() { 25 TimeZoneProvider::~TimeZoneProvider() {
25 DCHECK(thread_checker_.CalledOnValidThread()); 26 DCHECK(thread_checker_.CalledOnValidThread());
26 } 27 }
27 28
28 void TimeZoneProvider::RequestTimezone( 29 void TimeZoneProvider::RequestTimezone(
29 const Geoposition& position, 30 const Geoposition& position,
30 base::TimeDelta timeout, 31 base::TimeDelta timeout,
31 TimeZoneRequest::TimeZoneResponseCallback callback) { 32 TimeZoneRequest::TimeZoneResponseCallback callback) {
32 TimeZoneRequest* request(new TimeZoneRequest( 33 TimeZoneRequest* request(new TimeZoneRequest(
33 url_context_getter_.get(), url_, position,timeout)); 34 url_context_getter_.get(), url_, position,timeout));
34 requests_.push_back(request); 35 requests_.push_back(base::WrapUnique(request));
35 36
36 // TimeZoneProvider owns all requests. It is safe to pass unretained "this" 37 // TimeZoneProvider owns all requests. It is safe to pass unretained "this"
37 // because destruction of TimeZoneProvider cancels all requests. 38 // because destruction of TimeZoneProvider cancels all requests.
38 TimeZoneRequest::TimeZoneResponseCallback callback_tmp( 39 TimeZoneRequest::TimeZoneResponseCallback callback_tmp(
39 base::Bind(&TimeZoneProvider::OnTimezoneResponse, 40 base::Bind(&TimeZoneProvider::OnTimezoneResponse,
40 base::Unretained(this), 41 base::Unretained(this),
41 request, 42 request,
42 callback)); 43 callback));
43 request->MakeRequest(callback_tmp); 44 request->MakeRequest(callback_tmp);
44 } 45 }
45 46
46 void TimeZoneProvider::OnTimezoneResponse( 47 void TimeZoneProvider::OnTimezoneResponse(
47 TimeZoneRequest* request, 48 TimeZoneRequest* request,
48 TimeZoneRequest::TimeZoneResponseCallback callback, 49 TimeZoneRequest::TimeZoneResponseCallback callback,
49 std::unique_ptr<TimeZoneResponseData> timezone, 50 std::unique_ptr<TimeZoneResponseData> timezone,
50 bool server_error) { 51 bool server_error) {
51 ScopedVector<TimeZoneRequest>::iterator position = 52 std::vector<std::unique_ptr<TimeZoneRequest>>::iterator position =
52 std::find(requests_.begin(), requests_.end(), request); 53 std::find_if(requests_.begin(), requests_.end(),
54 [request](const std::unique_ptr<TimeZoneRequest>& req) {
55 return req.get() == request;
56 });
53 DCHECK(position != requests_.end()); 57 DCHECK(position != requests_.end());
54 if (position != requests_.end()) { 58 if (position != requests_.end()) {
55 std::swap(*position, *requests_.rbegin()); 59 std::swap(*position, *requests_.rbegin());
56 requests_.resize(requests_.size() - 1); 60 requests_.resize(requests_.size() - 1);
57 } 61 }
58 62
59 callback.Run(std::move(timezone), server_error); 63 callback.Run(std::move(timezone), server_error);
60 } 64 }
61 65
62 } // namespace chromeos 66 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/timezone/timezone_provider.h ('k') | chromeos/timezone/timezone_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698