// 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);
};