Commit c3178000 authored by Rohit Rao's avatar Rohit Rao Committed by Commit Bot

[ios] Enables chrome://user-actions.

BUG=903381

Change-Id: Ic99dc1e7d52e434a5f2b38b0fa561921aab26065
Reviewed-on: https://chromium-review.googlesource.com/c/1328821Reviewed-by: default avatarPeter Lee <pkl@chromium.org>
Commit-Queue: Rohit Rao <rohitrao@chromium.org>
Cr-Commit-Position: refs/heads/master@{#611095}
parent 4b752e0f
...@@ -44,8 +44,9 @@ const char kChromeUISignInInternalsHost[] = "signin-internals"; ...@@ -44,8 +44,9 @@ const char kChromeUISignInInternalsHost[] = "signin-internals";
const char kChromeUISuggestionsHost[] = "suggestions"; const char kChromeUISuggestionsHost[] = "suggestions";
const char kChromeUISyncInternalsHost[] = "sync-internals"; const char kChromeUISyncInternalsHost[] = "sync-internals";
const char kChromeUITermsHost[] = "terms"; const char kChromeUITermsHost[] = "terms";
const char kChromeUIVersionHost[] = "version";
const char kChromeUIURLKeyedMetricsHost[] = "ukm"; const char kChromeUIURLKeyedMetricsHost[] = "ukm";
const char kChromeUIUserActionsHost[] = "user-actions";
const char kChromeUIVersionHost[] = "version";
// Add hosts here to be included in chrome://chrome-urls (about:about). // Add hosts here to be included in chrome://chrome-urls (about:about).
// These hosts will also be suggested by BuiltinProvider. // These hosts will also be suggested by BuiltinProvider.
...@@ -63,6 +64,7 @@ const char* const kChromeHostURLs[] = { ...@@ -63,6 +64,7 @@ const char* const kChromeHostURLs[] = {
kChromeUISuggestionsHost, kChromeUISuggestionsHost,
kChromeUISyncInternalsHost, kChromeUISyncInternalsHost,
kChromeUITermsHost, kChromeUITermsHost,
kChromeUIUserActionsHost,
kChromeUIVersionHost, kChromeUIVersionHost,
}; };
const size_t kNumberOfChromeHostURLs = base::size(kChromeHostURLs); const size_t kNumberOfChromeHostURLs = base::size(kChromeHostURLs);
......
...@@ -56,8 +56,9 @@ extern const char kChromeUISignInInternalsHost[]; ...@@ -56,8 +56,9 @@ extern const char kChromeUISignInInternalsHost[];
extern const char kChromeUISuggestionsHost[]; extern const char kChromeUISuggestionsHost[];
extern const char kChromeUISyncInternalsHost[]; extern const char kChromeUISyncInternalsHost[];
extern const char kChromeUITermsHost[]; extern const char kChromeUITermsHost[];
extern const char kChromeUIVersionHost[];
extern const char kChromeUIURLKeyedMetricsHost[]; extern const char kChromeUIURLKeyedMetricsHost[];
extern const char kChromeUIUserActionsHost[];
extern const char kChromeUIVersionHost[];
// Gets the hosts/domains that are shown in chrome://chrome-urls. // Gets the hosts/domains that are shown in chrome://chrome-urls.
extern const char* const kChromeHostURLs[]; extern const char* const kChromeHostURLs[];
......
...@@ -22,6 +22,10 @@ source_set("webui") { ...@@ -22,6 +22,10 @@ source_set("webui") {
"terms_ui.mm", "terms_ui.mm",
"ukm_internals_ui.cc", "ukm_internals_ui.cc",
"ukm_internals_ui.h", "ukm_internals_ui.h",
"user_actions_handler.h",
"user_actions_handler.mm",
"user_actions_ui.h",
"user_actions_ui.mm",
"version_handler.cc", "version_handler.cc",
"version_handler.h", "version_handler.h",
"version_ui.h", "version_ui.h",
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include "ios/chrome/browser/ui/webui/sync_internals/sync_internals_ui.h" #include "ios/chrome/browser/ui/webui/sync_internals/sync_internals_ui.h"
#include "ios/chrome/browser/ui/webui/terms_ui.h" #include "ios/chrome/browser/ui/webui/terms_ui.h"
#include "ios/chrome/browser/ui/webui/ukm_internals_ui.h" #include "ios/chrome/browser/ui/webui/ukm_internals_ui.h"
#include "ios/chrome/browser/ui/webui/user_actions_ui.h"
#include "ios/chrome/browser/ui/webui/version_ui.h" #include "ios/chrome/browser/ui/webui/version_ui.h"
#include "url/gurl.h" #include "url/gurl.h"
...@@ -68,6 +69,8 @@ WebUIIOSFactoryFunction GetWebUIIOSFactoryFunction(WebUIIOS* web_ui, ...@@ -68,6 +69,8 @@ WebUIIOSFactoryFunction GetWebUIIOSFactoryFunction(WebUIIOS* web_ui,
return &NewWebUIIOSWithHost<AboutUI>; return &NewWebUIIOSWithHost<AboutUI>;
if (url_host == kChromeUICrashesHost) if (url_host == kChromeUICrashesHost)
return &NewWebUIIOS<CrashesUI>; return &NewWebUIIOS<CrashesUI>;
if (url_host == kChromeUIFlagsHost)
return &NewWebUIIOS<FlagsUI>;
if (url_host == kChromeUIGCMInternalsHost) if (url_host == kChromeUIGCMInternalsHost)
return &NewWebUIIOS<GCMInternalsUI>; return &NewWebUIIOS<GCMInternalsUI>;
if (url_host == kChromeUINetExportHost) if (url_host == kChromeUINetExportHost)
...@@ -82,16 +85,16 @@ WebUIIOSFactoryFunction GetWebUIIOSFactoryFunction(WebUIIOS* web_ui, ...@@ -82,16 +85,16 @@ WebUIIOSFactoryFunction GetWebUIIOSFactoryFunction(WebUIIOS* web_ui,
return &NewWebUIIOS<SignInInternalsUIIOS>; return &NewWebUIIOS<SignInInternalsUIIOS>;
if (url.host_piece() == kChromeUISuggestionsHost) if (url.host_piece() == kChromeUISuggestionsHost)
return &NewWebUIIOS<suggestions::SuggestionsUI>; return &NewWebUIIOS<suggestions::SuggestionsUI>;
if (url_host == kChromeUIURLKeyedMetricsHost)
return &NewWebUIIOS<UkmInternalsUI>;
if (url_host == kChromeUIUserActionsHost)
return &NewWebUIIOS<UserActionsUI>;
if (url_host == kChromeUISyncInternalsHost) if (url_host == kChromeUISyncInternalsHost)
return &NewWebUIIOS<SyncInternalsUI>; return &NewWebUIIOS<SyncInternalsUI>;
if (url_host == kChromeUITermsHost) if (url_host == kChromeUITermsHost)
return &NewWebUIIOSWithHost<TermsUI>; return &NewWebUIIOSWithHost<TermsUI>;
if (url_host == kChromeUIVersionHost) if (url_host == kChromeUIVersionHost)
return &NewWebUIIOS<VersionUI>; return &NewWebUIIOS<VersionUI>;
if (url_host == kChromeUIFlagsHost)
return &NewWebUIIOS<FlagsUI>;
if (url_host == kChromeUIURLKeyedMetricsHost)
return &NewWebUIIOS<UkmInternalsUI>;
return nullptr; return nullptr;
} }
......
// Copyright 2018 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 IOS_CHROME_BROWSER_UI_WEBUI_USER_ACTIONS_HANDLER_H_
#define IOS_CHROME_BROWSER_UI_WEBUI_USER_ACTIONS_HANDLER_H_
#include "base/macros.h"
#include "base/metrics/user_metrics.h"
#include "ios/web/public/webui/web_ui_ios_message_handler.h"
// UI Handler for chrome://user-actions/
// It listens to user action notifications and passes those notifications
// into the Javascript to update the page.
class UserActionsHandler : public web::WebUIIOSMessageHandler {
public:
UserActionsHandler();
~UserActionsHandler() override;
// WebUIIOSMessageHandler.
void RegisterMessages() override;
private:
// Called whenever a user action is registered.
void OnUserAction(const std::string& action);
// The callback to invoke whenever a user action is registered.
base::ActionCallback action_callback_;
DISALLOW_COPY_AND_ASSIGN(UserActionsHandler);
};
#endif // IOS_CHROME_BROWSER_UI_WEBUI_USER_ACTIONS_HANDLER_H_
// Copyright 2018 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 "ios/chrome/browser/ui/webui/user_actions_handler.h"
#include "base/bind.h"
#include "base/metrics/user_metrics.h"
#include "base/values.h"
#include "ios/web/public/webui/web_ui_ios.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
UserActionsHandler::UserActionsHandler()
: action_callback_(base::BindRepeating(&UserActionsHandler::OnUserAction,
base::Unretained(this))) {
base::AddActionCallback(action_callback_);
}
UserActionsHandler::~UserActionsHandler() {
base::RemoveActionCallback(action_callback_);
}
void UserActionsHandler::RegisterMessages() {}
void UserActionsHandler::OnUserAction(const std::string& action) {
base::Value user_action_name(action);
web_ui()->CallJavascriptFunction("userActions.observeUserAction",
user_action_name);
}
// Copyright 2018 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 IOS_CHROME_BROWSER_UI_WEBUI_USER_ACTIONS_UI_H_
#define IOS_CHROME_BROWSER_UI_WEBUI_USER_ACTIONS_UI_H_
#include "base/macros.h"
#include "ios/web/public/webui/web_ui_ios_controller.h"
// The UI for chrome://user-actions/
class UserActionsUI : public web::WebUIIOSController {
public:
explicit UserActionsUI(web::WebUIIOS* contents);
~UserActionsUI() override;
private:
DISALLOW_COPY_AND_ASSIGN(UserActionsUI);
};
#endif // IOS_CHROME_BROWSER_UI_WEBUI_USER_ACTIONS_UI_H_
// Copyright 2018 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 "ios/chrome/browser/ui/webui/user_actions_ui.h"
#include "components/grit/components_resources.h"
#include "ios/chrome/browser/browser_state/chrome_browser_state.h"
#include "ios/chrome/browser/chrome_url_constants.h"
#include "ios/chrome/browser/ui/webui/user_actions_handler.h"
#include "ios/web/public/web_ui_ios_data_source.h"
#include "ios/web/public/webui/web_ui_ios.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
UserActionsUI::UserActionsUI(web::WebUIIOS* web_ui)
: web::WebUIIOSController(web_ui) {
web_ui->AddMessageHandler(std::make_unique<UserActionsHandler>());
// Set up the chrome://user-actions/ source.
web::WebUIIOSDataSource* html_source =
web::WebUIIOSDataSource::Create(kChromeUIUserActionsHost);
html_source->SetDefaultResource(IDR_USER_ACTIONS_HTML);
html_source->AddResourcePath("user_actions.css", IDR_USER_ACTIONS_CSS);
html_source->AddResourcePath("user_actions.js", IDR_USER_ACTIONS_JS);
html_source->UseGzip();
web::WebUIIOSDataSource::Add(ios::ChromeBrowserState::FromWebUIIOS(web_ui),
html_source);
}
UserActionsUI::~UserActionsUI() {}
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