summaryrefslogtreecommitdiffstats
path: root/chromium/chrome/browser/ui/webui/bluetooth_internals/bluetooth_internals_handler.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/chrome/browser/ui/webui/bluetooth_internals/bluetooth_internals_handler.cc')
-rw-r--r--chromium/chrome/browser/ui/webui/bluetooth_internals/bluetooth_internals_handler.cc55
1 files changed, 46 insertions, 9 deletions
diff --git a/chromium/chrome/browser/ui/webui/bluetooth_internals/bluetooth_internals_handler.cc b/chromium/chrome/browser/ui/webui/bluetooth_internals/bluetooth_internals_handler.cc
index a65ef86a115..b88be86ef08 100644
--- a/chromium/chrome/browser/ui/webui/bluetooth_internals/bluetooth_internals_handler.cc
+++ b/chromium/chrome/browser/ui/webui/bluetooth_internals/bluetooth_internals_handler.cc
@@ -7,17 +7,25 @@
#include "base/bind.h"
#include "base/macros.h"
#include "base/strings/string16.h"
+#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
+#include "chrome/browser/chromeos/bluetooth/debug_logs_manager.h"
#include "device/bluetooth/adapter.h"
#include "device/bluetooth/bluetooth_adapter_factory.h"
-#include "mojo/public/cpp/bindings/strong_binding.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
+#include "mojo/public/cpp/bindings/self_owned_receiver.h"
#include "url/gurl.h"
+#if defined(OS_CHROMEOS)
+#include "chrome/browser/chromeos/bluetooth/debug_logs_manager.h"
+#endif
+
BluetoothInternalsHandler::BluetoothInternalsHandler(
- mojom::BluetoothInternalsHandlerRequest request)
- : binding_(this, std::move(request)) {}
+ mojo::PendingReceiver<mojom::BluetoothInternalsHandler> receiver)
+ : receiver_(this, std::move(receiver)) {}
-BluetoothInternalsHandler::~BluetoothInternalsHandler() {}
+BluetoothInternalsHandler::~BluetoothInternalsHandler() = default;
void BluetoothInternalsHandler::GetAdapter(GetAdapterCallback callback) {
if (device::BluetoothAdapterFactory::IsBluetoothSupported()) {
@@ -25,15 +33,44 @@ void BluetoothInternalsHandler::GetAdapter(GetAdapterCallback callback) {
base::BindOnce(&BluetoothInternalsHandler::OnGetAdapter,
weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
} else {
- std::move(callback).Run(nullptr /* AdapterPtr */);
+ std::move(callback).Run(mojo::NullRemote() /* adapter */);
+ }
+}
+
+void BluetoothInternalsHandler::GetDebugLogsChangeHandler(
+ GetDebugLogsChangeHandlerCallback callback) {
+ mojom::DebugLogsChangeHandlerPtr handler_ptr;
+ bool initial_toggle_value = false;
+
+#if defined(OS_CHROMEOS)
+ using chromeos::bluetooth::DebugLogsManager;
+
+ // If no logs manager exists for this user, debug logs are not supported.
+ DebugLogsManager::DebugLogsState state =
+ debug_logs_manager_ ? debug_logs_manager_->GetDebugLogsState()
+ : DebugLogsManager::DebugLogsState::kNotSupported;
+
+ switch (state) {
+ case DebugLogsManager::DebugLogsState::kNotSupported:
+ // Leave |handler_ptr| null and |initial_toggle_value| false.
+ break;
+ case DebugLogsManager::DebugLogsState::kSupportedAndEnabled:
+ initial_toggle_value = true;
+ FALLTHROUGH;
+ case DebugLogsManager::DebugLogsState::kSupportedButDisabled:
+ handler_ptr = debug_logs_manager_->GenerateInterfacePtr();
+ break;
}
+#endif
+
+ std::move(callback).Run(std::move(handler_ptr), initial_toggle_value);
}
void BluetoothInternalsHandler::OnGetAdapter(
GetAdapterCallback callback,
scoped_refptr<device::BluetoothAdapter> adapter) {
- bluetooth::mojom::AdapterPtr adapter_ptr;
- mojo::MakeStrongBinding(std::make_unique<bluetooth::Adapter>(adapter),
- mojo::MakeRequest(&adapter_ptr));
- std::move(callback).Run(std::move(adapter_ptr));
+ mojo::PendingRemote<bluetooth::mojom::Adapter> pending_adapter;
+ mojo::MakeSelfOwnedReceiver(std::make_unique<bluetooth::Adapter>(adapter),
+ pending_adapter.InitWithNewPipeAndPassReceiver());
+ std::move(callback).Run(std::move(pending_adapter));
}