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

Side by Side Diff: chrome/browser/usb/usb_tab_helper.cc

Issue 1857033003: Implement tab indicator for WebUSB. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Don't try to update tab indicator on Android. 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 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/usb/usb_tab_helper.h" 5 #include "chrome/browser/usb/usb_tab_helper.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "chrome/browser/ui/browser_finder.h"
11 #include "chrome/browser/ui/tabs/tab_strip_model.h"
10 #include "chrome/browser/usb/web_usb_permission_provider.h" 12 #include "chrome/browser/usb/web_usb_permission_provider.h"
11 #include "device/usb/mojo/device_manager_impl.h" 13 #include "device/usb/mojo/device_manager_impl.h"
12 14
13 #if defined(OS_ANDROID) 15 #if defined(OS_ANDROID)
14 #include "chrome/browser/android/usb/web_usb_chooser_service_android.h" 16 #include "chrome/browser/android/usb/web_usb_chooser_service_android.h"
15 #else 17 #else
16 #include "chrome/browser/usb/web_usb_chooser_service.h" 18 #include "chrome/browser/usb/web_usb_chooser_service.h"
17 #endif // defined(OS_ANDROID) 19 #endif // defined(OS_ANDROID)
18 20
19 using content::RenderFrameHost; 21 using content::RenderFrameHost;
(...skipping 30 matching lines...) Expand all
50 device::usb::DeviceManagerImpl::Create( 52 device::usb::DeviceManagerImpl::Create(
51 GetPermissionProvider(render_frame_host), std::move(request)); 53 GetPermissionProvider(render_frame_host), std::move(request));
52 } 54 }
53 55
54 void UsbTabHelper::CreateChooserService( 56 void UsbTabHelper::CreateChooserService(
55 content::RenderFrameHost* render_frame_host, 57 content::RenderFrameHost* render_frame_host,
56 mojo::InterfaceRequest<device::usb::ChooserService> request) { 58 mojo::InterfaceRequest<device::usb::ChooserService> request) {
57 GetChooserService(render_frame_host, std::move(request)); 59 GetChooserService(render_frame_host, std::move(request));
58 } 60 }
59 61
62 void UsbTabHelper::IncrementConnectionCount() {
63 device_connection_count_++;
64 NotifyTabStateChanged();
65 }
66
67 void UsbTabHelper::DecrementConnectionCount() {
68 DCHECK_GT(device_connection_count_, 0);
69 device_connection_count_--;
70 NotifyTabStateChanged();
71 }
72
73 bool UsbTabHelper::IsDeviceConnected() const {
74 return device_connection_count_ > 0;
75 }
76
60 UsbTabHelper::UsbTabHelper(WebContents* web_contents) 77 UsbTabHelper::UsbTabHelper(WebContents* web_contents)
61 : content::WebContentsObserver(web_contents) {} 78 : content::WebContentsObserver(web_contents), device_connection_count_(0) {}
62 79
63 void UsbTabHelper::RenderFrameDeleted(RenderFrameHost* render_frame_host) { 80 void UsbTabHelper::RenderFrameDeleted(RenderFrameHost* render_frame_host) {
64 frame_usb_services_.erase(render_frame_host); 81 frame_usb_services_.erase(render_frame_host);
65 } 82 }
66 83
67 FrameUsbServices* UsbTabHelper::GetFrameUsbService( 84 FrameUsbServices* UsbTabHelper::GetFrameUsbService(
68 content::RenderFrameHost* render_frame_host) { 85 content::RenderFrameHost* render_frame_host) {
69 FrameUsbServicesMap::const_iterator it = 86 FrameUsbServicesMap::const_iterator it =
70 frame_usb_services_.find(render_frame_host); 87 frame_usb_services_.find(render_frame_host);
71 if (it == frame_usb_services_.end()) { 88 if (it == frame_usb_services_.end()) {
(...skipping 22 matching lines...) Expand all
94 if (!frame_usb_services->chooser_service) { 111 if (!frame_usb_services->chooser_service) {
95 frame_usb_services->chooser_service.reset( 112 frame_usb_services->chooser_service.reset(
96 #if defined(OS_ANDROID) 113 #if defined(OS_ANDROID)
97 new WebUsbChooserServiceAndroid(render_frame_host)); 114 new WebUsbChooserServiceAndroid(render_frame_host));
98 #else 115 #else
99 new WebUsbChooserService(render_frame_host)); 116 new WebUsbChooserService(render_frame_host));
100 #endif // defined(OS_ANDROID) 117 #endif // defined(OS_ANDROID)
101 } 118 }
102 frame_usb_services->chooser_service->Bind(std::move(request)); 119 frame_usb_services->chooser_service->Bind(std::move(request));
103 } 120 }
121
122 void UsbTabHelper::NotifyTabStateChanged() const {
123 // TODO(https://crbug.com/601627): Implement tab indicator for Android.
124 #if !defined(OS_ANDROID)
125 Browser* browser = chrome::FindBrowserWithWebContents(web_contents());
126 if (browser) {
127 TabStripModel* tab_strip_model = browser->tab_strip_model();
128 tab_strip_model->UpdateWebContentsStateAt(
129 tab_strip_model->GetIndexOfWebContents(web_contents()),
130 TabStripModelObserver::ALL);
131 }
132 #endif
133 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698