1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
|
// Copyright 2016 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 "components/supervised_user_error_page/supervised_user_error_page.h"
#include "base/macros.h"
#include "base/strings/string16.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
#include "grit/components_resources.h"
#include "grit/components_strings.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/base/webui/jstemplate_builder.h"
#include "ui/base/webui/web_ui_util.h"
namespace supervised_user_error_page {
namespace {
static const int kAvatarSize1x = 45;
static const int kAvatarSize2x = 90;
#if defined(GOOGLE_CHROME_BUILD)
bool ReasonIsAutomatic(FilteringBehaviorReason reason) {
return reason == ASYNC_CHECKER || reason == BLACKLIST;
}
#endif
std::string BuildAvatarImageUrl(const std::string& url, int size) {
std::string result = url;
size_t slash = result.rfind('/');
if (slash != std::string::npos)
result.insert(slash, "/s" + base::IntToString(size));
return result;
}
} // namespace
int GetBlockMessageID(FilteringBehaviorReason reason,
bool is_child_account,
bool single_parent) {
switch (reason) {
case DEFAULT:
if (!is_child_account)
return IDS_SUPERVISED_USER_BLOCK_MESSAGE_DEFAULT;
if (single_parent)
return IDS_CHILD_BLOCK_MESSAGE_DEFAULT_SINGLE_PARENT;
return IDS_CHILD_BLOCK_MESSAGE_DEFAULT_MULTI_PARENT;
case BLACKLIST:
case ASYNC_CHECKER:
return IDS_SUPERVISED_USER_BLOCK_MESSAGE_SAFE_SITES;
case WHITELIST:
NOTREACHED();
break;
case MANUAL:
if (!is_child_account)
return IDS_SUPERVISED_USER_BLOCK_MESSAGE_MANUAL;
if (single_parent)
return IDS_CHILD_BLOCK_MESSAGE_MANUAL_SINGLE_PARENT;
return IDS_CHILD_BLOCK_MESSAGE_MANUAL_MULTI_PARENT;
case NOT_SIGNED_IN:
return IDS_SUPERVISED_USER_NOT_SIGNED_IN;
}
NOTREACHED();
return 0;
}
std::string BuildHtml(bool allow_access_requests,
const std::string& profile_image_url,
const std::string& profile_image_url2,
const std::string& custodian,
const std::string& custodian_email,
const std::string& second_custodian,
const std::string& second_custodian_email,
bool is_child_account,
FilteringBehaviorReason reason,
const std::string& app_locale) {
base::DictionaryValue strings;
strings.SetString("blockPageTitle",
l10n_util::GetStringUTF16(IDS_BLOCK_INTERSTITIAL_TITLE));
strings.SetBoolean("allowAccessRequests", allow_access_requests);
strings.SetString("avatarURL1x",
BuildAvatarImageUrl(profile_image_url, kAvatarSize1x));
strings.SetString("avatarURL2x",
BuildAvatarImageUrl(profile_image_url, kAvatarSize2x));
strings.SetString("secondAvatarURL1x",
BuildAvatarImageUrl(profile_image_url2, kAvatarSize1x));
strings.SetString("secondAvatarURL2x",
BuildAvatarImageUrl(profile_image_url2, kAvatarSize2x));
base::string16 custodian16 = base::UTF8ToUTF16(custodian);
strings.SetString("custodianName", custodian16);
strings.SetString("custodianEmail", base::UTF8ToUTF16(custodian_email));
strings.SetString("secondCustodianName", base::UTF8ToUTF16(second_custodian));
strings.SetString("secondCustodianEmail",
base::UTF8ToUTF16(second_custodian_email));
base::string16 block_header;
base::string16 block_message;
if (reason == FilteringBehaviorReason::NOT_SIGNED_IN) {
block_header =
l10n_util::GetStringUTF16(IDS_BLOCK_INTERSTITIAL_HEADER_NOT_SIGNED_IN);
} else if (allow_access_requests) {
if (is_child_account) {
block_header =
l10n_util::GetStringUTF16(IDS_CHILD_BLOCK_INTERSTITIAL_HEADER);
block_message =
l10n_util::GetStringUTF16(IDS_CHILD_BLOCK_INTERSTITIAL_MESSAGE);
} else {
block_header = l10n_util::GetStringFUTF16(IDS_BLOCK_INTERSTITIAL_HEADER,
custodian16);
// For non-child accounts, the block message is empty.
}
} else {
block_header = l10n_util::GetStringUTF16(
IDS_BLOCK_INTERSTITIAL_HEADER_ACCESS_REQUESTS_DISABLED);
// If access requests are disabled, there is no block message.
}
strings.SetString("blockPageHeader", block_header);
strings.SetString("blockPageMessage", block_message);
strings.SetString("blockReasonMessage",
l10n_util::GetStringUTF16(GetBlockMessageID(
reason, is_child_account, second_custodian.empty())));
strings.SetString("blockReasonHeader", l10n_util::GetStringUTF16(
IDS_SUPERVISED_USER_BLOCK_HEADER));
bool show_feedback = false;
#if defined(GOOGLE_CHROME_BUILD)
show_feedback = is_child_account && ReasonIsAutomatic(reason);
#endif
strings.SetBoolean("showFeedbackLink", show_feedback);
strings.SetString("feedbackLink", l10n_util::GetStringUTF16(
IDS_BLOCK_INTERSTITIAL_SEND_FEEDBACK));
strings.SetString("backButton", l10n_util::GetStringUTF16(IDS_BACK_BUTTON));
strings.SetString(
"requestAccessButton",
l10n_util::GetStringUTF16(IDS_BLOCK_INTERSTITIAL_REQUEST_ACCESS_BUTTON));
strings.SetString(
"showDetailsLink",
l10n_util::GetStringUTF16(IDS_BLOCK_INTERSTITIAL_SHOW_DETAILS));
strings.SetString(
"hideDetailsLink",
l10n_util::GetStringUTF16(IDS_BLOCK_INTERSTITIAL_HIDE_DETAILS));
base::string16 request_sent_message;
base::string16 request_failed_message;
if (is_child_account) {
if (second_custodian.empty()) {
request_sent_message = l10n_util::GetStringUTF16(
IDS_CHILD_BLOCK_INTERSTITIAL_REQUEST_SENT_MESSAGE_SINGLE_PARENT);
request_failed_message = l10n_util::GetStringUTF16(
IDS_CHILD_BLOCK_INTERSTITIAL_REQUEST_FAILED_MESSAGE_SINGLE_PARENT);
} else {
request_sent_message = l10n_util::GetStringUTF16(
IDS_CHILD_BLOCK_INTERSTITIAL_REQUEST_SENT_MESSAGE_MULTI_PARENT);
request_failed_message = l10n_util::GetStringUTF16(
IDS_CHILD_BLOCK_INTERSTITIAL_REQUEST_FAILED_MESSAGE_MULTI_PARENT);
}
} else {
request_sent_message = l10n_util::GetStringFUTF16(
IDS_BLOCK_INTERSTITIAL_REQUEST_SENT_MESSAGE, custodian16);
request_failed_message = l10n_util::GetStringFUTF16(
IDS_BLOCK_INTERSTITIAL_REQUEST_FAILED_MESSAGE, custodian16);
}
strings.SetString("requestSentMessage", request_sent_message);
strings.SetString("requestFailedMessage", request_failed_message);
webui::SetLoadTimeDataDefaults(app_locale, &strings);
std::string html =
ResourceBundle::GetSharedInstance()
.GetRawDataResource(IDR_SUPERVISED_USER_BLOCK_INTERSTITIAL_HTML)
.as_string();
webui::AppendWebUiCssTextDefaults(&html);
std::string error_html = webui::GetI18nTemplateHtml(html, &strings);
return error_html;
}
} // namespace supervised_user_error_page
|