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

Side by Side Diff: chrome/browser/ui/bluetooth/bluetooth_chooser_bubble_delegate.cc

Issue 1560263002: Store Bluetooth permissions in website settings (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address reillyg@'s comments Created 4 years, 11 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/ui/bluetooth/bluetooth_chooser_bubble_delegate.h" 5 #include "chrome/browser/ui/bluetooth/bluetooth_chooser_bubble_delegate.h"
6 6
7 #include "base/stl_util.h" 7 #include "base/stl_util.h"
8 #include "chrome/browser/profiles/profile.h"
9 #include "chrome/browser/ui/bluetooth/bluetooth_chooser_context.h"
10 #include "chrome/browser/ui/bluetooth/bluetooth_chooser_context_factory.h"
8 #include "chrome/browser/ui/bluetooth/bluetooth_chooser_desktop.h" 11 #include "chrome/browser/ui/bluetooth/bluetooth_chooser_desktop.h"
9 #include "components/bubble/bubble_controller.h" 12 #include "components/bubble/bubble_controller.h"
13 #include "content/public/browser/render_frame_host.h"
14 #include "content/public/browser/web_contents.h"
10 15
11 BluetoothChooserBubbleDelegate::BluetoothChooserBubbleDelegate(Browser* browser) 16 BluetoothChooserBubbleDelegate::BluetoothChooserBubbleDelegate(
12 : ChooserBubbleDelegate(browser), bluetooth_chooser_(nullptr) {} 17 Browser* browser,
18 content::WebContents* web_contents,
19 const GURL& origin)
20 : ChooserBubbleDelegate(browser),
21 web_contents_(web_contents),
22 origin_(origin),
23 bluetooth_chooser_(nullptr) {}
13 24
14 BluetoothChooserBubbleDelegate::~BluetoothChooserBubbleDelegate() { 25 BluetoothChooserBubbleDelegate::~BluetoothChooserBubbleDelegate() {
15 if (bluetooth_chooser_) 26 if (bluetooth_chooser_)
16 bluetooth_chooser_->set_bluetooth_chooser_bubble_delegate(nullptr); 27 bluetooth_chooser_->set_bluetooth_chooser_bubble_delegate(nullptr);
17 } 28 }
18 29
19 size_t BluetoothChooserBubbleDelegate::NumOptions() const { 30 size_t BluetoothChooserBubbleDelegate::NumOptions() const {
20 return device_names_and_ids_.size(); 31 return device_names_and_ids_.size();
21 } 32 }
22 33
23 const base::string16& BluetoothChooserBubbleDelegate::GetOption( 34 const base::string16& BluetoothChooserBubbleDelegate::GetOption(
24 size_t index) const { 35 size_t index) const {
25 DCHECK_LT(index, device_names_and_ids_.size()); 36 DCHECK_LT(index, device_names_and_ids_.size());
26 return device_names_and_ids_[index].first; 37 return device_names_and_ids_[index].first;
27 } 38 }
28 39
29 void BluetoothChooserBubbleDelegate::Select(size_t index) { 40 void BluetoothChooserBubbleDelegate::Select(size_t index) {
30 DCHECK_LT(index, device_names_and_ids_.size()); 41 DCHECK_LT(index, device_names_and_ids_.size());
31 if (bluetooth_chooser_) { 42 if (bluetooth_chooser_) {
32 bluetooth_chooser_->CallEventHandler( 43 bluetooth_chooser_->CallEventHandler(
33 content::BluetoothChooser::Event::SELECTED, 44 content::BluetoothChooser::Event::SELECTED,
34 device_names_and_ids_[index].second); 45 device_names_and_ids_[index].second);
35 } 46 }
36 47
48 GURL embedding_origin =
49 web_contents_->GetMainFrame()->GetLastCommittedURL().GetOrigin();
50 Profile* profile =
51 Profile::FromBrowserContext(web_contents_->GetBrowserContext());
52 BluetoothChooserContext* chooser_context =
53 BluetoothChooserContextFactory::GetForProfile(profile);
54 chooser_context->GrantDevicePermission(origin_, embedding_origin,
Jeffrey Yasskin 2016/01/06 19:23:45 After looking at your Android patch, I think this
juncai 2016/01/11 21:55:16 Done.
55 device_names_and_ids_[index].second);
56
37 if (bubble_controller_) 57 if (bubble_controller_)
38 bubble_controller_->CloseBubble(BUBBLE_CLOSE_ACCEPTED); 58 bubble_controller_->CloseBubble(BUBBLE_CLOSE_ACCEPTED);
39 } 59 }
40 60
41 void BluetoothChooserBubbleDelegate::Cancel() { 61 void BluetoothChooserBubbleDelegate::Cancel() {
42 if (bluetooth_chooser_) { 62 if (bluetooth_chooser_) {
43 bluetooth_chooser_->CallEventHandler( 63 bluetooth_chooser_->CallEventHandler(
44 content::BluetoothChooser::Event::CANCELLED, std::string()); 64 content::BluetoothChooser::Event::CANCELLED, std::string());
45 } 65 }
46 66
(...skipping 22 matching lines...) Expand all
69 it != device_names_and_ids_.end(); ++it) { 89 it != device_names_and_ids_.end(); ++it) {
70 if (it->second == device_id) { 90 if (it->second == device_id) {
71 size_t index = it - device_names_and_ids_.begin(); 91 size_t index = it - device_names_and_ids_.begin();
72 device_names_and_ids_.erase(it); 92 device_names_and_ids_.erase(it);
73 if (observer()) 93 if (observer())
74 observer()->OnOptionRemoved(index); 94 observer()->OnOptionRemoved(index);
75 return; 95 return;
76 } 96 }
77 } 97 }
78 } 98 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698