Skip to content

Commit

Permalink
[Nearby] Add 'Clear Prefs' button to chrome://nearby-internals.
Browse files Browse the repository at this point in the history
Adds a 'Clear Prefs' button to the logging tab of
chrome://nearby-internals, as follows:
https://screenshot.googleplex.com/Sq39758XDgUw8NE which resets
the Nearby feature, as follows:
1. before: https://screenshot.googleplex.com/7WoBN4GYggS5UPf,
   https://screenshot.googleplex.com/6ERnEmwWJCzEwYm
2. after: https://screenshot.googleplex.com/jaVKuB9nLrqFYfd
and adds a log message to notify users that the prefs have been
cleared.

(cherry picked from commit 4c1213c)

Fixed: 1147242
Change-Id: Ib666124b0c63df66eace9a8a0af26da8670cbccf
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2817842
Commit-Queue: Juliet Levesque <julietlevesque@google.com>
Reviewed-by: Josh Nohle <nohle@chromium.org>
Reviewed-by: James Vecore <vecore@google.com>
Cr-Original-Commit-Position: refs/heads/master@{#871501}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2826156
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/branch-heads/4472@{#83}
Cr-Branched-From: 3d60439-refs/heads/master@{#870763}
  • Loading branch information
julietlevesque authored and Chromium LUCI CQ committed Apr 14, 2021
1 parent e5e3646 commit bd892bb
Show file tree
Hide file tree
Showing 8 changed files with 141 additions and 0 deletions.
11 changes: 11 additions & 0 deletions chrome/browser/resources/nearby_internals/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ preprocess_if_expr("preprocess") {
"nearby_contact_browser_proxy.js",
"nearby_http_browser_proxy.js",
"nearby_logs_browser_proxy.js",
"nearby_prefs_browser_proxy.js",
"nearby_ui_trigger_browser_proxy.js",
"types.js",
]
Expand Down Expand Up @@ -91,6 +92,7 @@ js_type_check("closure_compile") {
":nearby_http_browser_proxy",
":nearby_internals",
":nearby_logs_browser_proxy",
":nearby_prefs_browser_proxy",
":nearby_ui_trigger_browser_proxy",
":types",
":ui_trigger_list_object",
Expand All @@ -109,6 +111,7 @@ js_library("nearby_internals") {
":nearby_contact_browser_proxy",
":nearby_http_browser_proxy",
":nearby_logs_browser_proxy",
":nearby_prefs_browser_proxy",
":nearby_ui_trigger_browser_proxy",
":types",
":ui_trigger_list_object",
Expand All @@ -122,6 +125,7 @@ js_library("logging_tab") {
deps = [
":log_object",
":nearby_logs_browser_proxy",
":nearby_prefs_browser_proxy",
":types",
"//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
"//ui/webui/resources/js:cr.m",
Expand All @@ -144,6 +148,13 @@ js_library("nearby_logs_browser_proxy") {
]
}

js_library("nearby_prefs_browser_proxy") {
deps = [
":types",
"//ui/webui/resources/js:cr.m",
]
}

js_library("nearby_http_browser_proxy") {
deps = [
":types",
Expand Down
4 changes: 4 additions & 0 deletions chrome/browser/resources/nearby_internals/logging_tab.html
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@
on-click="onClearLogsButtonClicked_">
Clear Logs
</cr-button>
<cr-button class="internals-button"
on-click="onClearPrefsButtonClicked_">
Reset Nearby
</cr-button>
<iron-list items="[[logList_]]" as="log" id="logs-list">
<template>
<log-object log-message="[[log]]">
Expand Down
13 changes: 13 additions & 0 deletions chrome/browser/resources/nearby_internals/logging_tab.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import './shared_style.js';
import {WebUIListenerBehavior} from 'chrome://resources/js/web_ui_listener_behavior.m.js';
import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {NearbyLogsBrowserProxy} from './nearby_logs_browser_proxy.js';
import {NearbyPrefsBrowserProxy} from './nearby_prefs_browser_proxy.js';
import {LogMessage, Severity} from './types.js';

/**
Expand Down Expand Up @@ -65,12 +66,16 @@ Polymer({
/** @private {?NearbyLogsBrowserProxy}*/
browserProxy_: null,

/** @private {?NearbyPrefsBrowserProxy}*/
prefsBrowserProxy_: null,

/**
* Initialize |browserProxy_| and |logList_|.
* @override
*/
created() {
this.browserProxy_ = NearbyLogsBrowserProxy.getInstance();
this.prefsBrowserProxy_ = NearbyPrefsBrowserProxy.getInstance();
},

/**
Expand All @@ -95,6 +100,14 @@ Polymer({
this.clearLogBuffer_();
},

/**
* Clears Nearby Share Prefs.
* @private
*/
onClearPrefsButtonClicked_() {
this.prefsBrowserProxy_.clearNearbyPrefs();
},

/**
* Saves and downloads javascript logs that appear on the page.
* @private
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Copyright 2021 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import {addSingletonGetter} from 'chrome://resources/js/cr.m.js';

/**
* JavaScript hooks into the native WebUI handler to communicate with C++ about
* Nearby prefs.
*/
export class NearbyPrefsBrowserProxy {
/**
* Tells C++ side to clear Nearby Prefs.
*/
clearNearbyPrefs() {
chrome.send('clearNearbyPrefs');
}
}

addSingletonGetter(NearbyPrefsBrowserProxy);
2 changes: 2 additions & 0 deletions chrome/browser/ui/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -2508,6 +2508,8 @@ static_library("ui") {
"webui/nearby_internals/nearby_internals_http_handler.h",
"webui/nearby_internals/nearby_internals_logs_handler.cc",
"webui/nearby_internals/nearby_internals_logs_handler.h",
"webui/nearby_internals/nearby_internals_prefs_handler.cc",
"webui/nearby_internals/nearby_internals_prefs_handler.h",
"webui/nearby_internals/nearby_internals_ui.cc",
"webui/nearby_internals/nearby_internals_ui.h",
"webui/nearby_internals/nearby_internals_ui_trigger_handler.cc",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
// Copyright 2021 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chrome/browser/ui/webui/nearby_internals/nearby_internals_prefs_handler.h"
#include "base/bind.h"
#include "chrome/browser/nearby_sharing/common/nearby_share_prefs.h"
#include "chrome/browser/nearby_sharing/logging/logging.h"
#include "chrome/browser/profiles/profile.h"

namespace {

const char kNearbySharingPrefPrefix[] = "nearby_sharing";

} // namespace

NearbyInternalsPrefsHandler::NearbyInternalsPrefsHandler(
content::BrowserContext* context) {
Profile* profile = Profile::FromBrowserContext(context);
pref_service_ = profile->GetPrefs();
}

NearbyInternalsPrefsHandler::~NearbyInternalsPrefsHandler() = default;

void NearbyInternalsPrefsHandler::RegisterMessages() {
web_ui()->RegisterMessageCallback(
"clearNearbyPrefs",
base::BindRepeating(&NearbyInternalsPrefsHandler::HandleClearNearbyPrefs,
base::Unretained(this)));
}

void NearbyInternalsPrefsHandler::OnJavascriptAllowed() {}

void NearbyInternalsPrefsHandler::OnJavascriptDisallowed() {}

void NearbyInternalsPrefsHandler::HandleClearNearbyPrefs(
const base::ListValue* args) {
// Turn Nearby feature off.
pref_service_->SetBoolean(prefs::kNearbySharingEnabledPrefName, false);

// Clear all Nearby related prefs.
pref_service_->ClearPrefsWithPrefixSilently(kNearbySharingPrefPrefix);

// Add log message so users who trigger the Clear Pref button on
// chrome://nearby-internals know that the Nearby prefs have been cleared.
NS_LOG(INFO)
<< "Nearby Share has been disabled and Nearby prefs have been cleared.";
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
// Copyright 2021 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_WEBUI_NEARBY_INTERNALS_NEARBY_INTERNALS_PREFS_HANDLER_H_
#define CHROME_BROWSER_UI_WEBUI_NEARBY_INTERNALS_NEARBY_INTERNALS_PREFS_HANDLER_H_

#include "base/memory/weak_ptr.h"
#include "components/prefs/pref_service.h"
#include "content/public/browser/web_ui_message_handler.h"

namespace content {
class BrowserContext;
} // namespace content

// WebUIMessageHandler for Nearby Prefs to allow users to Clear Prefs from the
// chrome://nearby-internals logging tab.
class NearbyInternalsPrefsHandler : public content::WebUIMessageHandler {
public:
explicit NearbyInternalsPrefsHandler(content::BrowserContext* context);
NearbyInternalsPrefsHandler(const NearbyInternalsPrefsHandler&) = delete;
NearbyInternalsPrefsHandler& operator=(const NearbyInternalsPrefsHandler&) =
delete;
~NearbyInternalsPrefsHandler() override;

// content::WebUIMessageHandler
void RegisterMessages() override;
void OnJavascriptAllowed() override;
void OnJavascriptDisallowed() override;

private:
// Message handler callback that clears Nearby prefs in order to put the user
// back into a state of before they have touched the feature.
void HandleClearNearbyPrefs(const base::ListValue* args);

PrefService* pref_service_ = nullptr;

base::WeakPtrFactory<NearbyInternalsPrefsHandler> weak_ptr_factory_{this};
};

#endif // CHROME_BROWSER_UI_WEBUI_NEARBY_INTERNALS_NEARBY_INTERNALS_PREFS_HANDLER_H_
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include "chrome/browser/ui/webui/nearby_internals/nearby_internals_contact_handler.h"
#include "chrome/browser/ui/webui/nearby_internals/nearby_internals_http_handler.h"
#include "chrome/browser/ui/webui/nearby_internals/nearby_internals_logs_handler.h"
#include "chrome/browser/ui/webui/nearby_internals/nearby_internals_prefs_handler.h"
#include "chrome/browser/ui/webui/nearby_internals/nearby_internals_ui_trigger_handler.h"
#include "chrome/browser/ui/webui/webui_util.h"
#include "chrome/common/webui_url_constants.h"
Expand Down Expand Up @@ -48,6 +49,8 @@ NearbyInternalsUI::NearbyInternalsUI(content::WebUI* web_ui)
std::make_unique<NearbyInternalsContactHandler>(context));
web_ui->AddMessageHandler(
std::make_unique<NearbyInternalsHttpHandler>(context));
web_ui->AddMessageHandler(
std::make_unique<NearbyInternalsPrefsHandler>(context));
web_ui->AddMessageHandler(
std::make_unique<NearbyInternalsUiTriggerHandler>(context));
}
Expand Down

0 comments on commit bd892bb

Please sign in to comment.