Commit 939ceae1 authored by khmel@chromium.org's avatar khmel@chromium.org Committed by Commit Bot

arc: Add UI for graphics buffer analyzer.

This adds base functionality of UI for ARC graphic buffers
visualization tools. It provides.
  * UI to start graphic buffer tracing
  * UI to show captured model.
  * Show top level Chrome and Android Graphics events
  * Show graphic buffers events grouped per view.
  * Each events band is expandable/collapsible.
  * Tooltip automatically pops up to describe content under the mouse.
This is kept behind the flag and not localized once not targeted to M73.

BUG=b:122555793
TEST=Locally

Change-Id: Ib285fbe9be6245cb2cb88cabbf11a07d28269c30
Reviewed-on: https://chromium-review.googlesource.com/c/1436135
Auto-Submit: Yury Khmel <khmel@chromium.org>
Reviewed-by: default avatarAvi Drissman <avi@chromium.org>
Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Reviewed-by: default avatarYusuke Sato <yusukes@chromium.org>
Commit-Queue: Yury Khmel <khmel@chromium.org>
Cr-Commit-Position: refs/heads/master@{#627041}
parent 58fc54c4
...@@ -2737,6 +2737,10 @@ const FeatureEntry kFeatureEntries[] = { ...@@ -2737,6 +2737,10 @@ const FeatureEntry kFeatureEntries[] = {
flag_descriptions::kArcFilePickerExperimentName, flag_descriptions::kArcFilePickerExperimentName,
flag_descriptions::kArcFilePickerExperimentDescription, kOsCrOS, flag_descriptions::kArcFilePickerExperimentDescription, kOsCrOS,
FEATURE_VALUE_TYPE(arc::kFilePickerExperimentFeature)}, FEATURE_VALUE_TYPE(arc::kFilePickerExperimentFeature)},
{"arc-graphics-buffer-visualization-tool",
flag_descriptions::kArcGraphicBuffersVisualizationToolName,
flag_descriptions::kArcGraphicBuffersVisualizationToolDescription, kOsCrOS,
FEATURE_VALUE_TYPE(arc::kGraphicBuffersVisualizationTool)},
{"arc-native-bridge-experiment", {"arc-native-bridge-experiment",
flag_descriptions::kArcNativeBridgeExperimentName, flag_descriptions::kArcNativeBridgeExperimentName,
flag_descriptions::kArcNativeBridgeExperimentDescription, kOsCrOS, flag_descriptions::kArcNativeBridgeExperimentDescription, kOsCrOS,
......
...@@ -723,6 +723,12 @@ ...@@ -723,6 +723,12 @@
<include name="IDR_SMART_DIM_EXAMPLE_PREPROCESSOR_CONFIG_PB" file="chromeos\power\ml\smart_dim\example_preprocessor_config.pb" type="BINDATA" /> <include name="IDR_SMART_DIM_EXAMPLE_PREPROCESSOR_CONFIG_PB" file="chromeos\power\ml\smart_dim\example_preprocessor_config.pb" type="BINDATA" />
<include name="IDR_SMART_DIM_LITE_EXAMPLE_PREPROCESSOR_CONFIG_PB" file="chromeos\power\ml\smart_dim\lite_example_preprocessor_config.pb" type="BINDATA" /> <include name="IDR_SMART_DIM_LITE_EXAMPLE_PREPROCESSOR_CONFIG_PB" file="chromeos\power\ml\smart_dim\lite_example_preprocessor_config.pb" type="BINDATA" />
</if> </if>
<if expr="chromeos">
<include name="IDR_ARC_GRAPHICS_TRACING_HTML" file="resources\chromeos\arc_graphics_tracing\arc_graphics_tracing.html" compress="gzip" type="BINDATA"/>
<include name="IDR_ARC_GRAPHICS_TRACING_JS" file="resources\chromeos\arc_graphics_tracing\arc_graphics_tracing.js" compress="gzip" type="BINDATA" />
<include name="IDR_ARC_GRAPHICS_TRACING_UI_JS" file="resources\chromeos\arc_graphics_tracing\arc_graphics_tracing_ui.js" compress="gzip" type="BINDATA" />
<include name="IDR_ARC_GRAPHICS_TRACING_CSS" file="resources\chromeos\arc_graphics_tracing\arc_graphics_tracing.css" compress="gzip" type="BINDATA" />
</if>
</includes> </includes>
</release> </release>
</grit> </grit>
...@@ -136,6 +136,11 @@ ...@@ -136,6 +136,11 @@
"owners": [ "niwa" ], "owners": [ "niwa" ],
"expiry_milestone": 80 "expiry_milestone": 80
}, },
{
"name": "arc-graphics-buffer-visualization-tool",
"owners": [ "khmel" ],
"expiry_milestone": 76
},
{ {
"name": "arc-native-bridge-experiment", "name": "arc-native-bridge-experiment",
"owners": [ "levarum@google.com" ], "owners": [ "levarum@google.com" ],
......
...@@ -3041,6 +3041,12 @@ const char kArcFilePickerExperimentName[] = ...@@ -3041,6 +3041,12 @@ const char kArcFilePickerExperimentName[] =
const char kArcFilePickerExperimentDescription[] = const char kArcFilePickerExperimentDescription[] =
"Enables using Chrome OS file picker in ARC."; "Enables using Chrome OS file picker in ARC.";
const char kArcGraphicBuffersVisualizationToolName[] =
"Enable ARC graphic buffers visualization tool";
const char kArcGraphicBuffersVisualizationToolDescription[] =
"Enable ARC graphic buffers visualization tool "
"(chrome://arc-graphics-tracing).";
const char kArcNativeBridgeExperimentName[] = const char kArcNativeBridgeExperimentName[] =
"Enable native bridge experiment for ARC"; "Enable native bridge experiment for ARC";
const char kArcNativeBridgeExperimentDescription[] = const char kArcNativeBridgeExperimentDescription[] =
......
...@@ -1817,6 +1817,9 @@ extern const char kArcDocumentsProviderDescription[]; ...@@ -1817,6 +1817,9 @@ extern const char kArcDocumentsProviderDescription[];
extern const char kArcFilePickerExperimentName[]; extern const char kArcFilePickerExperimentName[];
extern const char kArcFilePickerExperimentDescription[]; extern const char kArcFilePickerExperimentDescription[];
extern const char kArcGraphicBuffersVisualizationToolName[];
extern const char kArcGraphicBuffersVisualizationToolDescription[];
extern const char kArcNativeBridgeExperimentName[]; extern const char kArcNativeBridgeExperimentName[];
extern const char kArcNativeBridgeExperimentDescription[]; extern const char kArcNativeBridgeExperimentDescription[];
......
/* Copyright 2019 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. */
#arc-event-bands {
margin: 0 auto;
overflow: auto;
white-space: nowrap;
width: 100%;
}
#arc-event-band-tooltip {
background-color: rgb(255, 255, 192);
border: 1px solid #a0a0a0;
display: none;
pointer-events: none;
position: absolute;
text-align: start;
width: 240px;
}
#arc-event-band-tooltip.active {
display: block;
}
.arc-events-inner-band {
display: block;
margin: 0 0 4px 0;
}
.arc-events-top-band {
display: block;
margin: 0 0 8px 0;
}
.arc-events-band-title {
border: none;
display: block;
left: 0;
outline: none;
position: sticky;
text-align: start;
}
.arc-events-band-title::before {
content: '\2212';
float: left;
font-weight: bold;
margin-inline-end: 4px;
}
.hidden.arc-events-band-title::before {
content: '\002B';
}
.hidden.arc-events-inner-band,
.hidden.arc-events-top-band {
display: none;
}
<!-- Copyright 2019 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. -->
<!doctype html>
<html>
<head>
<meta charset=utf-8>
<link rel="stylesheet" href="arc_graphics_tracing.css">
<script src="chrome://resources/js/cr.js"></script>
<script src="chrome://resources/js/cr/ui.js"></script>
<script src="chrome://resources/js/util.js"></script>
<script src="arc_graphics_tracing_ui.js"></script>
<script src="arc_graphics_tracing.js"></script>
</head>
<title>Graphics buffer</title>
<body>
<div id="arc-graphics-tracing-control">
<h4>ARC graphics tracing</h4>
<input type="button"
id="arc-graphics-tracing-start"
value="Start tracing in ">
<input type="text"
id="arc-graphics-tracing-start-delay"
value="3">
seconds for
<input type="text"
id="arc-graphics-tracing-duration"
value="2">
seconds.
</div>
<div id='arc-event-bands'></div>
<svg id='arc-event-band-tooltip'></svg>
</body>
</html>
// Copyright 2019 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.
/**
* @fileoverview ARC Graphics Tracing UI root element.
*/
cr.define('cr.ArcGraphicsTracing', function() {
return {
/**
* Initializes internal structures.
*/
initialize: function() {
var startDelay = $('arc-graphics-tracing-start-delay');
var duration = $('arc-graphics-tracing-duration');
$('arc-graphics-tracing-start')
.addEventListener('click', function(event) {
chrome.send(
'startTracing',
[Number(startDelay.value), Number(duration.value)]);
}, false);
},
setModel: function(model) {
setGraphicBuffersModel(model);
}
};
});
/**
* Initializes UI.
*/
window.onload = function() {
cr.ArcGraphicsTracing.initialize();
};
...@@ -1516,6 +1516,10 @@ jumbo_split_static_library("ui") { ...@@ -1516,6 +1516,10 @@ jumbo_split_static_library("ui") {
"webui/chromeos/account_manager_welcome_dialog.h", "webui/chromeos/account_manager_welcome_dialog.h",
"webui/chromeos/account_manager_welcome_ui.cc", "webui/chromeos/account_manager_welcome_ui.cc",
"webui/chromeos/account_manager_welcome_ui.h", "webui/chromeos/account_manager_welcome_ui.h",
"webui/chromeos/arc_graphics_tracing/arc_graphics_tracing_handler.cc",
"webui/chromeos/arc_graphics_tracing/arc_graphics_tracing_handler.h",
"webui/chromeos/arc_graphics_tracing/arc_graphics_tracing_ui.cc",
"webui/chromeos/arc_graphics_tracing/arc_graphics_tracing_ui.h",
"webui/chromeos/assistant_optin/assistant_optin_ui.cc", "webui/chromeos/assistant_optin/assistant_optin_ui.cc",
"webui/chromeos/assistant_optin/assistant_optin_ui.h", "webui/chromeos/assistant_optin/assistant_optin_ui.h",
"webui/chromeos/assistant_optin/assistant_optin_utils.cc", "webui/chromeos/assistant_optin/assistant_optin_utils.cc",
......
...@@ -143,6 +143,7 @@ ...@@ -143,6 +143,7 @@
#include "chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.h" #include "chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.h"
#include "chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_factory.h" #include "chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_factory.h"
#include "chrome/browser/chromeos/secure_channel/secure_channel_client_provider.h" #include "chrome/browser/chromeos/secure_channel/secure_channel_client_provider.h"
#include "chrome/browser/ui/webui/chromeos/arc_graphics_tracing/arc_graphics_tracing_ui.h"
#include "chrome/browser/ui/webui/chromeos/assistant_optin/assistant_optin_ui.h" #include "chrome/browser/ui/webui/chromeos/assistant_optin/assistant_optin_ui.h"
#include "chrome/browser/ui/webui/chromeos/bluetooth_pairing_dialog.h" #include "chrome/browser/ui/webui/chromeos/bluetooth_pairing_dialog.h"
#include "chrome/browser/ui/webui/chromeos/certificate_manager_dialog_ui.h" #include "chrome/browser/ui/webui/chromeos/certificate_manager_dialog_ui.h"
...@@ -166,6 +167,7 @@ ...@@ -166,6 +167,7 @@
#include "chromeos/components/multidevice/debug_webui/proximity_auth_ui.h" #include "chromeos/components/multidevice/debug_webui/proximity_auth_ui.h"
#include "chromeos/components/multidevice/debug_webui/url_constants.h" #include "chromeos/components/multidevice/debug_webui/url_constants.h"
#include "chromeos/constants/chromeos_features.h" #include "chromeos/constants/chromeos_features.h"
#include "components/arc/arc_features.h"
#endif #endif
#if defined(OS_CHROMEOS) && !defined(OFFICIAL_BUILD) #if defined(OS_CHROMEOS) && !defined(OFFICIAL_BUILD)
...@@ -523,6 +525,12 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, ...@@ -523,6 +525,12 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
return &NewWebUI<SysInternalsUI>; return &NewWebUI<SysInternalsUI>;
if (url.host_piece() == chrome::kChromeUIAssistantOptInHost) if (url.host_piece() == chrome::kChromeUIAssistantOptInHost)
return &NewWebUI<chromeos::AssistantOptInUI>; return &NewWebUI<chromeos::AssistantOptInUI>;
if (url.host_piece() == chrome::kChromeUIArcGraphicsTracingHost) {
if (!base::FeatureList::IsEnabled(arc::kGraphicBuffersVisualizationTool))
return nullptr;
return &NewWebUI<chromeos::ArcGraphicsTracingUI>;
}
#if !defined(OFFICIAL_BUILD) #if !defined(OFFICIAL_BUILD)
if (!base::SysInfo::IsRunningOnChromeOS()) { if (!base::SysInfo::IsRunningOnChromeOS()) {
if (url.host_piece() == chrome::kChromeUIDeviceEmulatorHost) if (url.host_piece() == chrome::kChromeUIDeviceEmulatorHost)
......
// Copyright 2019 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/chromeos/arc_graphics_tracing/arc_graphics_tracing_handler.h"
#include <string>
#include "base/bind.h"
#include "base/memory/ref_counted_memory.h"
#include "base/task/post_task.h"
#include "base/values.h"
#include "chrome/browser/chromeos/arc/tracing/arc_tracing_graphics_model.h"
#include "chrome/browser/chromeos/arc/tracing/arc_tracing_model.h"
#include "content/public/browser/tracing_controller.h"
#include "content/public/browser/web_ui.h"
namespace chromeos {
namespace {
std::unique_ptr<base::Value> BuildGraphicsModel(const std::string& data) {
arc::ArcTracingModel common_model;
if (!common_model.Build(data)) {
LOG(ERROR) << "Failed to build common model";
return nullptr;
}
arc::ArcTracingGraphicsModel graphics_model;
if (!graphics_model.Build(common_model)) {
LOG(ERROR) << "Failed to build graphic buffers model";
return nullptr;
}
return graphics_model.Serialize();
}
} // namespace
ArcGraphicsTracingHandler::ArcGraphicsTracingHandler()
: weak_ptr_factory_(this) {}
ArcGraphicsTracingHandler::~ArcGraphicsTracingHandler() = default;
void ArcGraphicsTracingHandler::RegisterMessages() {
web_ui()->RegisterMessageCallback(
"startTracing",
base::BindRepeating(&ArcGraphicsTracingHandler::HandleStartTracing,
base::Unretained(this)));
}
void ArcGraphicsTracingHandler::StartTracing(double duration) {
base::trace_event::TraceConfig config(
"-*,exo,viz,toplevel,gpu,cc,blink,disabled-by-default-android "
"gfx,disabled-by-default-android hal",
base::trace_event::RECORD_CONTINUOUSLY);
config.EnableSystrace();
content::TracingController::GetInstance()->StartTracing(
config, base::BindOnce(&ArcGraphicsTracingHandler::OnTracingStarted,
weak_ptr_factory_.GetWeakPtr(), duration));
}
void ArcGraphicsTracingHandler::StopTracing() {
content::TracingController::GetInstance()->StopTracing(
content::TracingController::CreateStringEndpoint(
base::BindRepeating(&ArcGraphicsTracingHandler::OnTracingStopped,
weak_ptr_factory_.GetWeakPtr())));
}
void ArcGraphicsTracingHandler::OnTracingStarted(double duration) {
tracing_timer_.Start(FROM_HERE, base::TimeDelta::FromSecondsD(duration),
base::BindOnce(&ArcGraphicsTracingHandler::StopTracing,
base::Unretained(this)));
}
void ArcGraphicsTracingHandler::OnTracingStopped(
std::unique_ptr<const base::DictionaryValue> metadata,
base::RefCountedString* trace_data) {
std::string string_data;
string_data.swap(trace_data->data());
base::PostTaskWithTraitsAndReplyWithResult(
FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
base::BindOnce(&BuildGraphicsModel, std::move(string_data)),
base::BindOnce(&ArcGraphicsTracingHandler::OnGraphicsModelReady,
weak_ptr_factory_.GetWeakPtr()));
}
void ArcGraphicsTracingHandler::OnGraphicsModelReady(
std::unique_ptr<base::Value> model) {
if (!model)
return;
AllowJavascript();
CallJavascriptFunction("cr.ArcGraphicsTracing.setModel", *model);
}
void ArcGraphicsTracingHandler::HandleStartTracing(
const base::ListValue* args) {
DCHECK_EQ(2U, args->GetSize());
if ((!args->GetList()[0].is_double() && !args->GetList()[0].is_int()) ||
(!args->GetList()[1].is_double() && !args->GetList()[1].is_int())) {
LOG(ERROR) << "Invalid input";
return;
}
const double delay = args->GetList()[0].GetDouble();
const double duration = args->GetList()[1].GetDouble();
tracing_timer_.Start(FROM_HERE, base::TimeDelta::FromSecondsD(delay),
base::BindOnce(&ArcGraphicsTracingHandler::StartTracing,
base::Unretained(this), duration));
}
} // namespace chromeos
// Copyright 2019 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_CHROMEOS_ARC_GRAPHICS_TRACING_ARC_GRAPHICS_TRACING_HANDLER_H_
#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_ARC_GRAPHICS_TRACING_ARC_GRAPHICS_TRACING_HANDLER_H_
#include <memory>
#include <utility>
#include "base/macros.h"
#include "base/memory/weak_ptr.h"
#include "base/timer/timer.h"
#include "content/public/browser/web_ui_message_handler.h"
namespace base {
class ListValue;
class RefCountedString;
} // namespace base
namespace chromeos {
class ArcGraphicsTracingHandler : public content::WebUIMessageHandler {
public:
ArcGraphicsTracingHandler();
~ArcGraphicsTracingHandler() override;
// content::WebUIMessageHandler:
void RegisterMessages() override;
private:
void StartTracing(double duration);
void StopTracing();
void OnTracingStarted(double duration);
void OnTracingStopped(std::unique_ptr<const base::DictionaryValue> metadata,
base::RefCountedString* trace_data);
// Called when graphics model is built and ready.
void OnGraphicsModelReady(std::unique_ptr<base::Value> model);
// Handlers for calls from JS.
void HandleStartTracing(const base::ListValue* args);
// To implement start/stop tracing.
base::OneShotTimer tracing_timer_;
base::WeakPtrFactory<ArcGraphicsTracingHandler> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(ArcGraphicsTracingHandler);
};
} // namespace chromeos
#endif // CHROME_BROWSER_UI_WEBUI_CHROMEOS_ARC_GRAPHICS_TRACING_ARC_GRAPHICS_TRACING_HANDLER_H_
// Copyright 2019 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/chromeos/arc_graphics_tracing/arc_graphics_tracing_ui.h"
#include <memory>
#include <string>
#include "chrome/browser/browser_process.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/webui/chromeos/arc_graphics_tracing/arc_graphics_tracing_handler.h"
#include "chrome/common/webui_url_constants.h"
#include "chrome/grit/browser_resources.h"
#include "content/public/browser/web_ui.h"
#include "content/public/browser/web_ui_data_source.h"
#include "ui/base/webui/web_ui_util.h"
namespace {
constexpr char kArcGraphicsTracingJsPath[] = "arc_graphics_tracing.js";
constexpr char kArcGraphicsTracingUiJsPath[] = "arc_graphics_tracing_ui.js";
constexpr char kArcGraphicsTracingCssPath[] = "arc_graphics_tracing.css";
content::WebUIDataSource* CreateDataSource() {
content::WebUIDataSource* source =
content::WebUIDataSource::Create(chrome::kChromeUIArcGraphicsTracingHost);
source->SetJsonPath("strings.js");
source->SetDefaultResource(IDR_ARC_GRAPHICS_TRACING_HTML);
source->AddResourcePath(kArcGraphicsTracingJsPath,
IDR_ARC_GRAPHICS_TRACING_JS);
source->AddResourcePath(kArcGraphicsTracingUiJsPath,
IDR_ARC_GRAPHICS_TRACING_UI_JS);
source->AddResourcePath(kArcGraphicsTracingCssPath,
IDR_ARC_GRAPHICS_TRACING_CSS);
source->OverrideContentSecurityPolicyScriptSrc(
"script-src chrome://resources 'self';");
base::DictionaryValue localized_strings;
const std::string& app_locale = g_browser_process->GetApplicationLocale();
webui::SetLoadTimeDataDefaults(app_locale, &localized_strings);
source->AddLocalizedStrings(localized_strings);
source->UseGzip();
return source;
}
} // anonymous namespace
namespace chromeos {
ArcGraphicsTracingUI::ArcGraphicsTracingUI(content::WebUI* web_ui)
: WebUIController(web_ui) {
web_ui->AddMessageHandler(std::make_unique<ArcGraphicsTracingHandler>());
content::WebUIDataSource::Add(Profile::FromWebUI(web_ui), CreateDataSource());
}
} // namespace chromeos
// Copyright 2019 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_CHROMEOS_ARC_GRAPHICS_TRACING_ARC_GRAPHICS_TRACING_UI_H_
#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_ARC_GRAPHICS_TRACING_ARC_GRAPHICS_TRACING_UI_H_
#include "base/macros.h"
#include "content/public/browser/web_ui_controller.h"
namespace content {
class WebUI;
}
namespace chromeos {
// WebUI controller for arc graphics tracing.
class ArcGraphicsTracingUI : public content::WebUIController {
public:
explicit ArcGraphicsTracingUI(content::WebUI* web_ui);
private:
DISALLOW_COPY_AND_ASSIGN(ArcGraphicsTracingUI);
};
} // namespace chromeos
#endif // CHROME_BROWSER_UI_WEBUI_CHROMEOS_ARC_GRAPHICS_TRACING_ARC_GRAPHICS_TRACING_UI_H_
...@@ -235,6 +235,8 @@ const char kChromeUIUserImageHost[] = "userimage"; ...@@ -235,6 +235,8 @@ const char kChromeUIUserImageHost[] = "userimage";
const char kChromeUIUserImageURL[] = "chrome://userimage/"; const char kChromeUIUserImageURL[] = "chrome://userimage/";
const char kChromeUIAssistantOptInHost[] = "assistant-optin"; const char kChromeUIAssistantOptInHost[] = "assistant-optin";
const char kChromeUIAssistantOptInURL[] = "chrome://assistant-optin/"; const char kChromeUIAssistantOptInURL[] = "chrome://assistant-optin/";
const char kChromeUIArcGraphicsTracingHost[] = "arc-graphics-tracing";
const char kChromeUIArcGraphicsTracingURL[] = "chrome://arc-graphics-tracing/";
#endif // defined(OS_CHROMEOS) #endif // defined(OS_CHROMEOS)
#if defined(OS_WIN) #if defined(OS_WIN)
......
...@@ -230,6 +230,8 @@ extern const char kChromeUIUserImageHost[]; ...@@ -230,6 +230,8 @@ extern const char kChromeUIUserImageHost[];
extern const char kChromeUIUserImageURL[]; extern const char kChromeUIUserImageURL[];
extern const char kChromeUIAssistantOptInHost[]; extern const char kChromeUIAssistantOptInHost[];
extern const char kChromeUIAssistantOptInURL[]; extern const char kChromeUIAssistantOptInURL[];
extern const char kChromeUIArcGraphicsTracingHost[];
extern const char kChromeUIArcGraphicsTracingURL[];
#endif // defined(OS_CHROMEOS) #endif // defined(OS_CHROMEOS)
#if defined(OS_WIN) #if defined(OS_WIN)
......
...@@ -43,6 +43,10 @@ const base::Feature kEnableUnifiedAudioFocusFeature{ ...@@ -43,6 +43,10 @@ const base::Feature kEnableUnifiedAudioFocusFeature{
const base::Feature kFilePickerExperimentFeature{ const base::Feature kFilePickerExperimentFeature{
"ArcFilePickerExperiment", base::FEATURE_DISABLED_BY_DEFAULT}; "ArcFilePickerExperiment", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls experimental ARC graphic buffers visualization tools.
const base::Feature kGraphicBuffersVisualizationTool{
"ArcGraphicBuffersVisualizationTool", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls experimental native bridge feature for ARC. // Controls experimental native bridge feature for ARC.
const base::Feature kNativeBridgeExperimentFeature { const base::Feature kNativeBridgeExperimentFeature {
"ArcNativeBridgeExperiment", base::FEATURE_ENABLED_BY_DEFAULT "ArcNativeBridgeExperiment", base::FEATURE_ENABLED_BY_DEFAULT
......
...@@ -20,6 +20,7 @@ extern const base::Feature kEnableDocumentsProviderInFilesAppFeature; ...@@ -20,6 +20,7 @@ extern const base::Feature kEnableDocumentsProviderInFilesAppFeature;
extern const base::Feature kEnableRegularToChildTransitionFeature; extern const base::Feature kEnableRegularToChildTransitionFeature;
extern const base::Feature kEnableUnifiedAudioFocusFeature; extern const base::Feature kEnableUnifiedAudioFocusFeature;
extern const base::Feature kFilePickerExperimentFeature; extern const base::Feature kFilePickerExperimentFeature;
extern const base::Feature kGraphicBuffersVisualizationTool;
extern const base::Feature kNativeBridgeExperimentFeature; extern const base::Feature kNativeBridgeExperimentFeature;
extern const base::Feature kSmartTextSelectionFeature; extern const base::Feature kSmartTextSelectionFeature;
extern const base::Feature kUsbHostFeature; extern const base::Feature kUsbHostFeature;
......
...@@ -31514,6 +31514,7 @@ from previous Chrome versions. ...@@ -31514,6 +31514,7 @@ from previous Chrome versions.
<int value="-416660617" label="EnforceTLS13Downgrade:disabled"/> <int value="-416660617" label="EnforceTLS13Downgrade:disabled"/>
<int value="-415186532" label="AndroidSiteSettingsUIRefresh:enabled"/> <int value="-415186532" label="AndroidSiteSettingsUIRefresh:enabled"/>
<int value="-410852857" label="ImprovedA2HS:disabled"/> <int value="-410852857" label="ImprovedA2HS:disabled"/>
<int value="-408769228" label="ArcGraphicBuffersVisualizationTool:disabled"/>
<int value="-406850932" label="EnableEmojiContextMenu:enabled"/> <int value="-406850932" label="EnableEmojiContextMenu:enabled"/>
<int value="-405380243" label="enable-encryption-migration"/> <int value="-405380243" label="enable-encryption-migration"/>
<int value="-401170566" <int value="-401170566"
...@@ -31561,6 +31562,7 @@ from previous Chrome versions. ...@@ -31561,6 +31562,7 @@ from previous Chrome versions.
<int value="-340622848" label="disable-javascript-harmony-shipping"/> <int value="-340622848" label="disable-javascript-harmony-shipping"/>
<int value="-340255045" label="allow-nacl-socket-api"/> <int value="-340255045" label="allow-nacl-socket-api"/>
<int value="-340023285" label="WebNFC:enabled"/> <int value="-340023285" label="WebNFC:enabled"/>
<int value="-339103761" label="ArcGraphicBuffersVisualizationTool:enabled"/>
<int value="-338978205" label="NavigationMojoResponse:enabled"/> <int value="-338978205" label="NavigationMojoResponse:enabled"/>
<int value="-329727402" label="disable-files-quick-view"/> <int value="-329727402" label="disable-files-quick-view"/>
<int value="-328361990" label="enable-experimental-extension-apis"/> <int value="-328361990" label="enable-experimental-extension-apis"/>
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