| Index: chrome/browser/ui/website_settings/website_settings.cc
|
| diff --git a/chrome/browser/ui/website_settings/website_settings.cc b/chrome/browser/ui/website_settings/website_settings.cc
|
| index 74add62f94d44c0fe10dbeaa7189e5c264acf9d2..1da149b6ca4407f63040a9e06ef91e67895a6cfb 100644
|
| --- a/chrome/browser/ui/website_settings/website_settings.cc
|
| +++ b/chrome/browser/ui/website_settings/website_settings.cc
|
| @@ -11,6 +11,7 @@
|
| #include <vector>
|
|
|
| #include "base/command_line.h"
|
| +#include "base/feature_list.h"
|
| #include "base/i18n/time_formatting.h"
|
| #include "base/macros.h"
|
| #include "base/memory/ptr_util.h"
|
| @@ -66,6 +67,7 @@
|
| #include "net/ssl/ssl_connection_status_flags.h"
|
| #include "third_party/boringssl/src/include/openssl/ssl.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
| +#include "ui/base/material_design/material_design_controller.h"
|
|
|
| #if defined(OS_CHROMEOS)
|
| #include "chrome/browser/chromeos/policy/policy_cert_service.h"
|
| @@ -84,6 +86,10 @@ using content::BrowserThread;
|
|
|
| namespace {
|
|
|
| +// TODO(crbug.com/695725): Change this to FEATURE_DISABLED_BY_DEFAULT
|
| +const base::Feature kPageInfoAlwaysShowAllPermissions{
|
| + "PageInfoAlwaysShowAllPermissions", base::FEATURE_ENABLED_BY_DEFAULT};
|
| +
|
| // Events for UMA. Do not reorder or change!
|
| enum SSLCertificateDecisionsDidRevoke {
|
| USER_CERT_DECISIONS_NOT_REVOKED = 0,
|
| @@ -218,6 +224,7 @@ WebsiteSettings::WebsiteSettings(
|
| tab_specific_content_settings),
|
| content::WebContentsObserver(web_contents),
|
| ui_(ui),
|
| + show_all_permissions_(false),
|
| show_info_bar_(false),
|
| site_url_(url),
|
| site_identity_status_(SITE_IDENTITY_STATUS_UNKNOWN),
|
| @@ -231,6 +238,10 @@ WebsiteSettings::WebsiteSettings(
|
| security_level_(security_state::NONE) {
|
| Init(url, security_info);
|
|
|
| + if (base::FeatureList::IsEnabled(kPageInfoAlwaysShowAllPermissions)) {
|
| + show_all_permissions_ = true;
|
| + }
|
| +
|
| PresentSitePermissions();
|
| PresentSiteData();
|
| PresentSiteIdentity();
|
| @@ -317,7 +328,18 @@ void WebsiteSettings::OnSitePermissionChanged(ContentSettingsType type,
|
|
|
| show_info_bar_ = true;
|
|
|
| - // Refresh the UI to reflect the new setting.
|
| +#if defined(OS_MACOSX)
|
| + // TODO(crbug.com/695690, crbug.com/695723): This is currently only needed on
|
| + // Cocoa, and breaks accessibility.
|
| + if (!ui::MaterialDesignController::IsSecondaryUiMaterial()) {
|
| + // Refresh the UI to reflect the new setting.
|
| + PresentSitePermissions();
|
| + }
|
| +#endif
|
| +}
|
| +
|
| +void WebsiteSettings::OnPresentAllSitePermissions() {
|
| + show_all_permissions_ = true;
|
| PresentSitePermissions();
|
| }
|
|
|
| @@ -644,6 +666,9 @@ void WebsiteSettings::PresentSitePermissions() {
|
| PermissionInfoList permission_info_list;
|
| ChosenObjectInfoList chosen_object_info_list;
|
|
|
| + bool anyPermissionsShown = false;
|
| + bool anyPermissionsHidden = false;
|
| +
|
| WebsiteSettingsUI::PermissionInfo permission_info;
|
| for (size_t i = 0; i < arraysize(kPermissionType); ++i) {
|
| permission_info.type = kPermissionType[i];
|
| @@ -654,6 +679,7 @@ void WebsiteSettings::PresentSitePermissions() {
|
| content_settings::SettingInfo info;
|
| std::unique_ptr<base::Value> value = content_settings_->GetWebsiteSetting(
|
| site_url_, site_url_, permission_info.type, std::string(), &info);
|
| +
|
| DCHECK(value.get());
|
| if (value->GetType() == base::Value::Type::INTEGER) {
|
| permission_info.setting =
|
| @@ -675,7 +701,13 @@ void WebsiteSettings::PresentSitePermissions() {
|
| NULL);
|
| }
|
|
|
| - permission_info_list.push_back(permission_info);
|
| + if (show_all_permissions_ ||
|
| + permission_info.setting != CONTENT_SETTING_DEFAULT) {
|
| + permission_info_list.push_back(permission_info);
|
| + anyPermissionsShown = true;
|
| + } else {
|
| + anyPermissionsHidden = true;
|
| + }
|
| }
|
|
|
| for (const ChooserUIInfo& ui_info : kChooserUIInfo) {
|
| @@ -686,11 +718,25 @@ void WebsiteSettings::PresentSitePermissions() {
|
| chosen_object_info_list.push_back(
|
| base::MakeUnique<WebsiteSettingsUI::ChosenObjectInfo>(
|
| ui_info, std::move(object)));
|
| + anyPermissionsShown = true;
|
| }
|
| }
|
|
|
| ui_->SetPermissionInfo(permission_info_list,
|
| std::move(chosen_object_info_list));
|
| +
|
| + WebsiteSettingsUI::VisiblePermissions visible_permissions;
|
| + if (anyPermissionsShown) {
|
| + if (anyPermissionsHidden) {
|
| + visible_permissions =
|
| + WebsiteSettingsUI::VISIBLE_PERMISSIONS_SOME_BUT_NOT_ALL;
|
| + } else {
|
| + visible_permissions = WebsiteSettingsUI::VISIBLE_PERMISSIONS_ALL;
|
| + }
|
| + } else {
|
| + visible_permissions = WebsiteSettingsUI::VISIBLE_PERMISSIONS_NONE;
|
| + }
|
| + ui_->UpdatePermissionButton(visible_permissions);
|
| }
|
|
|
| void WebsiteSettings::PresentSiteData() {
|
|
|