| // Copyright 2017 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| module mojom; |
| |
| import "device/bluetooth/public/mojom/adapter.mojom"; |
| |
| // Handles requests from chrome://bluetooth-internals to enable or disable the |
| // usage of Bluetooth debug logs. The debug logs to be enabled reside in the |
| // kernel as well within BlueZ/NewBlue. Note that these logs are text-only and |
| // do not include captured packets from btmon. |
| interface DebugLogsChangeHandler { |
| // Enables or disables debug logs, depending on the value of |
| // |should_debug_logs_be_enabled|. |
| ChangeDebugLogsState(bool should_debug_logs_be_enabled); |
| }; |
| |
| interface BluetoothInternalsHandler { |
| // Gets an Adapter interface. Returns null if Bluetooth is not supported. |
| GetAdapter() => (pending_remote<bluetooth.mojom.Adapter>? adapter); |
| |
| // Retrieves a handler for changing the state of debug logs. If debug logs are |
| // not supported (e.g., the required flags are disabled or the logged-in user |
| // is not eligible), null is returned. When a valid handler is returned, an |
| // extra boolean is provided which represents the initial state of the toggle. |
| GetDebugLogsChangeHandler() |
| => (pending_remote<DebugLogsChangeHandler>? handler, |
| bool initial_toggle_value); |
| |
| // On Android, checks if the Chrome needs permissions to use Bluetooth. |
| // This is needed for Android as it requires some system permissions to be |
| // granted for accessing Bluetooth. |
| // On other platforms, false is returned for all values. |
| CheckSystemPermissions() => (bool need_location_permission, |
| bool need_nearby_devices_permission, bool need_location_services, |
| bool can_request_permissions); |
| |
| // On Android, this prompts the user for permissions necessary to access |
| // Bluetooth. |
| // On all other platforms, this is a no-op. |
| RequestSystemPermissions() => (); |
| |
| // On Android, this requests the user to enable the Location Services by |
| // showing them the settings page so they can turn it on. |
| // On all other platforms, this is a no-op. |
| RequestLocationServices() => (); |
| |
| // Restarts Bluetooth system. |
| // If Bluetooth system is already off turns it back on. |
| // If Bluetooth is unavailable this is no-op. |
| [EnableIf=is_chromeos_ash] |
| RestartSystemBluetooth() => (); |
| |
| // On ChromeOS, starts a btsnoop process that writes to daemon-store. |
| // If a previous process exists, stop it and create a new process. |
| // This is not the snoop process that starts for internal account, that is |
| // chrome/browser/ash/bluetooth/bluetooth_log_controller.cc. |
| // On other platforms, it immediately returns null. |
| StartBtsnoop() => (pending_remote<BluetoothBtsnoop>? btsnoop); |
| |
| // Returns whether btsnoop feature is enabled via flags. |
| // When the flag is stable we can remove this. |
| IsBtsnoopFeatureEnabled() => (bool enabled); |
| }; |
| |
| // Interface to control the btsnoop process returned by |
| // BluetoothInternalsHandler::StartBtsnoop. |
| interface BluetoothBtsnoop { |
| // On ChromeOS, stops the btsnoop started by StartBtsnoop(). |
| // On other platforms, it shouldn't be callable, but anyway it immediately |
| // returns false. |
| // Calling this method will also close this interface. |
| Stop() => (bool success); |
| }; |