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

Side by Side Diff: chrome/browser/webshare/share_service_impl.cc

Issue 2688413006: Fixed crash if tab closes while WebShare picker dialog is open. (Closed)
Patch Set: Do Sam's suggestions. 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
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 "chrome/browser/webshare/share_service_impl.h" 5 #include "chrome/browser/webshare/share_service_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <functional> 8 #include <functional>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 30 matching lines...) Expand all
41 joined_pieces.reserve(total_size); 41 joined_pieces.reserve(total_size);
42 42
43 for (const auto& piece : pieces) { 43 for (const auto& piece : pieces) {
44 piece.AppendToString(&joined_pieces); 44 piece.AppendToString(&joined_pieces);
45 } 45 }
46 return joined_pieces; 46 return joined_pieces;
47 } 47 }
48 48
49 } // namespace 49 } // namespace
50 50
51 ShareServiceImpl::ShareServiceImpl() = default; 51 ShareServiceImpl::ShareServiceImpl() : weak_factory_(this) {}
52 ShareServiceImpl::~ShareServiceImpl() = default; 52 ShareServiceImpl::~ShareServiceImpl() = default;
53 53
54 // static 54 // static
55 void ShareServiceImpl::Create(blink::mojom::ShareServiceRequest request) { 55 void ShareServiceImpl::Create(blink::mojom::ShareServiceRequest request) {
56 mojo::MakeStrongBinding(base::MakeUnique<ShareServiceImpl>(), 56 mojo::MakeStrongBinding(base::MakeUnique<ShareServiceImpl>(),
57 std::move(request)); 57 std::move(request));
58 } 58 }
59 59
60 // static 60 // static
61 bool ShareServiceImpl::ReplacePlaceholders(base::StringPiece url_template, 61 bool ShareServiceImpl::ReplacePlaceholders(base::StringPiece url_template,
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 196
197 share_targets = GetPrefService() 197 share_targets = GetPrefService()
198 ->GetDictionary(prefs::kWebShareVisitedTargets) 198 ->GetDictionary(prefs::kWebShareVisitedTargets)
199 ->CreateDeepCopy(); 199 ->CreateDeepCopy();
200 200
201 std::vector<std::pair<base::string16, GURL>> sufficiently_engaged_targets = 201 std::vector<std::pair<base::string16, GURL>> sufficiently_engaged_targets =
202 GetTargetsWithSufficientEngagement(*share_targets); 202 GetTargetsWithSufficientEngagement(*share_targets);
203 203
204 ShowPickerDialog( 204 ShowPickerDialog(
205 sufficiently_engaged_targets, 205 sufficiently_engaged_targets,
206 base::Bind(&ShareServiceImpl::OnPickerClosed, base::Unretained(this), 206 base::Bind(&ShareServiceImpl::OnPickerClosed, weak_factory_.GetWeakPtr(),
207 base::Passed(&share_targets), title, text, share_url, 207 base::Passed(&share_targets), title, text, share_url,
208 callback)); 208 callback));
209 } 209 }
210 210
211 void ShareServiceImpl::OnPickerClosed( 211 void ShareServiceImpl::OnPickerClosed(
212 std::unique_ptr<base::DictionaryValue> share_targets, 212 std::unique_ptr<base::DictionaryValue> share_targets,
213 const std::string& title, 213 const std::string& title,
214 const std::string& text, 214 const std::string& text,
215 const GURL& share_url, 215 const GURL& share_url,
216 const ShareCallback& callback, 216 const ShareCallback& callback,
(...skipping 22 matching lines...) Expand all
239 const GURL target(url_base.as_string() + url_template_filled); 239 const GURL target(url_base.as_string() + url_template_filled);
240 if (!target.is_valid()) { 240 if (!target.is_valid()) {
241 callback.Run(base::Optional<std::string>( 241 callback.Run(base::Optional<std::string>(
242 "Error: url of share target is not a valid url.")); 242 "Error: url of share target is not a valid url."));
243 return; 243 return;
244 } 244 }
245 OpenTargetURL(target); 245 OpenTargetURL(target);
246 246
247 callback.Run(base::nullopt); 247 callback.Run(base::nullopt);
248 } 248 }
OLDNEW
« no previous file with comments | « chrome/browser/webshare/share_service_impl.h ('k') | chrome/browser/webshare/share_service_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698