blob: 36cc5822e3ca5df181ecb6a2cc8c24eb5130ea27 [file] [log] [blame]
// 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/feedback/feedback_ui.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/webui_url_constants.h"
#include "chrome/grit/feedback_resources.h"
#include "chrome/grit/feedback_resources_map.h"
#include "chrome/grit/generated_resources.h"
#include "components/strings/grit/components_strings.h"
#include "content/public/browser/web_ui.h"
#include "content/public/browser/web_ui_data_source.h"
#if BUILDFLAG(IS_CHROMEOS_ASH)
#include "chrome/browser/ash/arc/arc_util.h"
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
void AddStringResources(content::WebUIDataSource* source,
const Profile* profile) {
static constexpr webui::LocalizedString kStrings[] = {
{"additionalInfo", IDS_FEEDBACK_ADDITIONAL_INFO_LABEL},
{"anonymousUser", IDS_FEEDBACK_ANONYMOUS_EMAIL_OPTION},
{"appTitle", IDS_FEEDBACK_REPORT_APP_TITLE},
{"assistantInfo", IDS_FEEDBACK_INCLUDE_ASSISTANT_INFORMATION_CHKBOX},
{"assistantLogsMessage", IDS_FEEDBACK_ASSISTANT_LOGS_MESSAGE},
{"attachFileLabel", IDS_FEEDBACK_ATTACH_FILE_LABEL},
{"attachFileNote", IDS_FEEDBACK_ATTACH_FILE_NOTE},
{"attachFileToBig", IDS_FEEDBACK_ATTACH_FILE_TO_BIG},
{"bluetoothLogsInfo", IDS_FEEDBACK_BLUETOOTH_LOGS_CHECKBOX},
{"bluetoothLogsMessage", IDS_FEEDBACK_BLUETOOTH_LOGS_MESSAGE},
{"cancel", IDS_CANCEL},
{"freeFormText", IDS_FEEDBACK_FREE_TEXT_LABEL},
{"minimizeBtnLabel", IDS_FEEDBACK_MINIMIZE_BUTTON_LABEL},
{"noDescription", IDS_FEEDBACK_NO_DESCRIPTION},
{"pageTitle", IDS_FEEDBACK_REPORT_PAGE_TITLE},
{"pageUrl", IDS_FEEDBACK_REPORT_URL_LABEL},
{"performanceTrace", IDS_FEEDBACK_INCLUDE_PERFORMANCE_TRACE_CHECKBOX},
{"privacyNote", IDS_FEEDBACK_PRIVACY_NOTE},
{"screenshot", IDS_FEEDBACK_SCREENSHOT_LABEL},
{"screenshotA11y", IDS_FEEDBACK_SCREENSHOT_A11Y_TEXT},
{"sendReport", IDS_FEEDBACK_SEND_REPORT},
{"sysinfoPageCollapseAllBtn", IDS_ABOUT_SYS_COLLAPSE_ALL},
{"sysinfoPageCollapseBtn", IDS_ABOUT_SYS_COLLAPSE},
{"sysinfoPageDescription", IDS_ABOUT_SYS_DESC},
{"sysinfoPageExpandAllBtn", IDS_ABOUT_SYS_EXPAND_ALL},
{"sysinfoPageExpandBtn", IDS_ABOUT_SYS_EXPAND},
{"sysinfoPageStatusLoading", IDS_FEEDBACK_SYSINFO_PAGE_LOADING},
{"sysinfoPageTableTitle", IDS_ABOUT_SYS_TABLE_TITLE},
{"sysinfoPageTitle", IDS_FEEDBACK_SYSINFO_PAGE_TITLE},
{"userEmail", IDS_FEEDBACK_USER_EMAIL_LABEL},
};
source->AddLocalizedStrings(kStrings);
#if BUILDFLAG(IS_CHROMEOS_ASH)
source->AddLocalizedString(
"sysInfo",
arc::IsArcPlayStoreEnabledForProfile(profile)
? IDS_FEEDBACK_INCLUDE_SYSTEM_INFORMATION_AND_METRICS_CHKBOX_ARC
: IDS_FEEDBACK_INCLUDE_SYSTEM_INFORMATION_AND_METRICS_CHKBOX);
#else
source->AddLocalizedString("sysInfo",
IDS_FEEDBACK_INCLUDE_SYSTEM_INFORMATION_CHKBOX);
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
}
content::WebUIDataSource* CreateFeedbackHTMLSource(const Profile* profile) {
content::WebUIDataSource* source =
content::WebUIDataSource::Create(chrome::kChromeUIFeedbackHost);
source->AddResourcePaths(
base::make_span(kFeedbackResources, kFeedbackResourcesSize));
source->AddResourcePath("", IDR_FEEDBACK_DEFAULT_HTML);
source->UseStringsJs();
AddStringResources(source, profile);
return source;
}
FeedbackUI::FeedbackUI(content::WebUI* web_ui) : WebDialogUI(web_ui) {
Profile* profile = Profile::FromWebUI(web_ui);
content::WebUIDataSource::Add(profile, CreateFeedbackHTMLSource(profile));
}
FeedbackUI::~FeedbackUI() = default;