Commit 42e95f73 authored by Kyle Horimoto's avatar Kyle Horimoto Committed by Commit Bot

[CrOS Bluetooth] Fix chrome://bluetooth-internals debug logs.

This CL:
(1) Calls DebugLogsManagerFactory::GetInstance() within
    ChromeBrowserMainExtraPartsProfiles to ensure that DebugLogsManager
    is created as soon as the user logs in, regardless of whether
    chrome://bluetooth-internals is visited.
(2) Converts the <cr-toggle> used in the page into an <input> instead.
    This was necessary because chrome://bluetooth-internals is also used
    by Chromium for Android, which doesn't use Polymer.
(3) Adds the chromeos::bluetooth namespace to these classes.

Bug: 1006293
Change-Id: Ib163f55af376ff646f69790948af852e2ca07aa3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1825171
Commit-Queue: Kyle Horimoto <khorimoto@chromium.org>
Reviewed-by: default avatarSteven Bennetts <stevenjb@chromium.org>
Reviewed-by: default avatarMihai Sardarescu <msarda@chromium.org>
Auto-Submit: Kyle Horimoto <khorimoto@chromium.org>
Cr-Commit-Position: refs/heads/master@{#700828}
parent 6ee8cc80
......@@ -9,6 +9,10 @@
#include "chromeos/constants/chromeos_features.h"
#include "components/user_manager/user.h"
namespace chromeos {
namespace bluetooth {
namespace {
const char kSupportedEmailSuffix[] = "@google.com";
} // namespace
......@@ -51,3 +55,7 @@ bool DebugLogsManager::AreDebugLogsSupported() const {
return base::EndsWith(primary_user_->GetDisplayEmail(), kSupportedEmailSuffix,
base::CompareCase::INSENSITIVE_ASCII);
}
} // namespace bluetooth
} // namespace chromeos
......@@ -13,6 +13,10 @@ namespace user_manager {
class User;
} // namespace user_manager
namespace chromeos {
namespace bluetooth {
// Manages the use of debug Bluetooth logs. Under normal usage, only warning and
// error logs are captured, but there are some situations in which it is
// advantageous to capture more verbose logs (e.g., in noisy environments or on
......@@ -51,4 +55,8 @@ class DebugLogsManager : public mojom::DebugLogsChangeHandler {
DISALLOW_COPY_AND_ASSIGN(DebugLogsManager);
};
} // namespace bluetooth
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_BLUETOOTH_DEBUG_LOGS_MANAGER_H_
......@@ -8,10 +8,15 @@
#include "chrome/browser/chromeos/bluetooth/debug_logs_manager.h"
#include "chrome/browser/chromeos/profiles/profile_helper.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/signin/identity_manager_factory.h"
#include "components/keyed_service/content/browser_context_dependency_manager.h"
#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
#include "components/keyed_service/core/keyed_service.h"
namespace chromeos {
namespace bluetooth {
namespace {
// Wraps a DebugLogsManager instance in a KeyedService.
......@@ -51,7 +56,9 @@ DebugLogsManagerFactory* DebugLogsManagerFactory::GetInstance() {
DebugLogsManagerFactory::DebugLogsManagerFactory()
: BrowserContextKeyedServiceFactory(
"DebugLogsManagerFactory",
BrowserContextDependencyManager::GetInstance()) {}
BrowserContextDependencyManager::GetInstance()) {
DependsOn(IdentityManagerFactory::GetInstance());
}
DebugLogsManagerFactory::~DebugLogsManagerFactory() = default;
......@@ -69,3 +76,7 @@ KeyedService* DebugLogsManagerFactory::BuildServiceInstanceFor(
bool DebugLogsManagerFactory::ServiceIsCreatedWithBrowserContext() const {
return true;
}
} // namespace bluetooth
} // namespace chromeos
......@@ -8,9 +8,14 @@
#include "base/memory/singleton.h"
#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
class DebugLogsManager;
class Profile;
namespace chromeos {
namespace bluetooth {
class DebugLogsManager;
// Factory for DebugLogsManager.
class DebugLogsManagerFactory : public BrowserContextKeyedServiceFactory {
public:
......@@ -31,4 +36,8 @@ class DebugLogsManagerFactory : public BrowserContextKeyedServiceFactory {
DISALLOW_COPY_AND_ASSIGN(DebugLogsManagerFactory);
};
} // namespace bluetooth
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_BLUETOOTH_DEBUG_LOGS_MANAGER_FACTORY_H_
......@@ -109,6 +109,7 @@
#if defined(OS_CHROMEOS)
#include "chrome/browser/chromeos/android_sms/android_sms_service_factory.h"
#include "chrome/browser/chromeos/bluetooth/debug_logs_manager_factory.h"
#include "chrome/browser/chromeos/crostini/crostini_registry_service_factory.h"
#include "chrome/browser/chromeos/extensions/login_screen/login_state/session_state_changed_event_dispatcher.h"
#include "chrome/browser/chromeos/extensions/printing_metrics/print_job_finished_event_dispatcher.h"
......@@ -273,6 +274,7 @@ void ChromeBrowserMainExtraPartsProfiles::
#endif
#if defined(OS_CHROMEOS)
chromeos::AccountManagerMigratorFactory::GetInstance();
chromeos::bluetooth::DebugLogsManagerFactory::GetInstance();
chromeos::CupsPrintJobManagerFactory::GetInstance();
chromeos::CupsPrintersManagerFactory::GetInstance();
chromeos::PrintJobHistoryServiceFactory::GetInstance();
......
......@@ -34,7 +34,6 @@ js_library("bluetooth_internals") {
deps = [
"//chrome/browser/ui/webui/bluetooth_internals:mojo_bindings_js_library_for_compile",
"//ui/webui/resources/cr_elements/cr_toggle:cr_toggle",
"//ui/webui/resources/js:cr",
"//ui/webui/resources/js:util",
"//ui/webui/resources/js/cr/ui:array_data_model",
......
......@@ -10,7 +10,6 @@
<link rel="stylesheet" href="chrome://resources/css/spinner.css">
<link rel="stylesheet" href="bluetooth_internals.css">
<link rel="import" href="chrome://resources/cr_elements/cr_toggle/cr_toggle.html">
<link rel="import" href="chrome://resources/html/action_link.html">
<link rel="import" href="chrome://resources/html/cr/ui.html">
<link rel="import" href="chrome://resources/html/cr/event_target.html">
......
......@@ -24,8 +24,8 @@ cr.define('debug_log_page', function() {
*/
this.debugLogsChangeHandler_ = null;
/** @private {?CrToggleElement} */
this.toggleElement_ = null;
/** @private {?HTMLInputElement} */
this.inputElement_ = null;
/** @private {!HTMLDivElement} */
this.debugContainer_ =
......@@ -33,7 +33,7 @@ cr.define('debug_log_page', function() {
bluetoothInternalsHandler.getDebugLogsChangeHandler().then((params) => {
if (params.handler) {
this.setUpToggle(params.handler, params.initialToggleValue);
this.setUpInput(params.handler, params.initialToggleValue);
} else {
this.debugContainer_.textContent = LOGS_NOT_SUPPORTED_STRING;
}
......@@ -42,22 +42,23 @@ cr.define('debug_log_page', function() {
/**
* @param {!mojom.DebugLogsChangeHandlerRemote} handler
* @param {boolean} initialToggleValue
* @param {boolean} initialInputValue
*/
setUpToggle(handler, initialToggleValue) {
setUpInput(handler, initialInputValue) {
this.debugLogsChangeHandler_ = handler;
this.toggleElement_ =
/** @type {!CrToggleElement} */ (document.createElement('cr-toggle'));
this.toggleElement_.checked = initialToggleValue;
this.toggleElement_.addEventListener(
this.inputElement_ =
/** @type {!HTMLInputElement} */ (document.createElement('input'));
this.inputElement_.setAttribute('type', 'checkbox');
this.inputElement_.checked = initialInputValue;
this.inputElement_.addEventListener(
'change', this.onToggleChange.bind(this));
this.debugContainer_.appendChild(this.toggleElement_);
this.debugContainer_.appendChild(this.inputElement_);
}
onToggleChange() {
this.debugLogsChangeHandler_.changeDebugLogsState(
this.toggleElement_.checked);
this.inputElement_.checked);
}
}
......
......@@ -43,6 +43,8 @@ void BluetoothInternalsHandler::GetDebugLogsChangeHandler(
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()
......
......@@ -13,7 +13,11 @@
#include "mojo/public/cpp/bindings/receiver.h"
#if defined(OS_CHROMEOS)
namespace chromeos {
namespace bluetooth {
class DebugLogsManager;
} // namespace bluetooth
} // namespace chromeos
#endif
// Handles API requests from chrome://bluetooth-internals page by implementing
......@@ -25,7 +29,8 @@ class BluetoothInternalsHandler : public mojom::BluetoothInternalsHandler {
~BluetoothInternalsHandler() override;
#if defined(OS_CHROMEOS)
void set_debug_logs_manager(DebugLogsManager* debug_logs_manager) {
void set_debug_logs_manager(
chromeos::bluetooth::DebugLogsManager* debug_logs_manager) {
debug_logs_manager_ = debug_logs_manager;
}
#endif
......@@ -42,7 +47,7 @@ class BluetoothInternalsHandler : public mojom::BluetoothInternalsHandler {
mojo::Receiver<mojom::BluetoothInternalsHandler> receiver_;
#if defined(OS_CHROMEOS)
DebugLogsManager* debug_logs_manager_ = nullptr;
chromeos::bluetooth::DebugLogsManager* debug_logs_manager_ = nullptr;
#endif
base::WeakPtrFactory<BluetoothInternalsHandler> weak_ptr_factory_{this};
......
......@@ -52,6 +52,7 @@ void BluetoothInternalsUI::BindBluetoothInternalsHandler(
std::make_unique<BluetoothInternalsHandler>(std::move(receiver));
#if defined(OS_CHROMEOS)
page_handler_->set_debug_logs_manager(
DebugLogsManagerFactory::GetForProfile(Profile::FromWebUI(web_ui())));
chromeos::bluetooth::DebugLogsManagerFactory::GetForProfile(
Profile::FromWebUI(web_ui())));
#endif
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment