Commit b4907cc5 authored by melandory's avatar melandory Committed by Commit bot

Polish Safe Browsing Subresource filter infobar.

1. Both OK and "Load full site" buttons should be present.
2. Infobar should have message and explanation text

BUG=609747

Review-Url: https://codereview.chromium.org/2393813002
Cr-Commit-Position: refs/heads/master@{#423715}
parent 48a8996a
// Copyright 2015 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.
package org.chromium.chrome.browser.infobar;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.chrome.browser.ResourceId;
/**
* After user proceed through Safe Browsing warning interstitials that are displayed when the site
* ahead contains deceptive embedded content, the infobar appears, explains the feature and give
* the user an ability to reload the page with the content we've blocked previously.
*/
public class SubresourceFilterInfoBar extends ConfirmInfoBar {
private final String mExplanationMessage;
@CalledByNative
private static InfoBar show(int enumeratedIconId, String message, String primaryButtonText,
String secondaryButtonText, String explanationMessage) {
return new SubresourceFilterInfoBar(ResourceId.mapToDrawableId(enumeratedIconId), message,
primaryButtonText, secondaryButtonText, explanationMessage);
}
private SubresourceFilterInfoBar(int iconDrawbleId, String message, String primaryButtonText,
String secondaryButtonText, String explanationMessage) {
super(iconDrawbleId, null, message, null, primaryButtonText, secondaryButtonText);
mExplanationMessage = explanationMessage;
}
@Override
public void createContent(InfoBarLayout layout) {
super.createContent(layout);
InfoBarControlLayout controlLayout = layout.addControlLayout();
controlLayout.addDescription(mExplanationMessage);
}
}
......@@ -422,6 +422,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/infobar/PermissionUpdateInfoBarDelegate.java",
"java/src/org/chromium/chrome/browser/infobar/SavePasswordInfoBar.java",
"java/src/org/chromium/chrome/browser/infobar/SimpleConfirmInfoBarBuilder.java",
"java/src/org/chromium/chrome/browser/infobar/SubresourceFilterInfoBar.java",
"java/src/org/chromium/chrome/browser/infobar/SubPanelListener.java",
"java/src/org/chromium/chrome/browser/infobar/TranslateAlwaysPanel.java",
"java/src/org/chromium/chrome/browser/infobar/TranslateInfoBar.java",
......
......@@ -3812,6 +3812,7 @@ if (android_java_ui) {
"../android/java/src/org/chromium/chrome/browser/infobar/PermissionUpdateInfoBarDelegate.java",
"../android/java/src/org/chromium/chrome/browser/infobar/SavePasswordInfoBar.java",
"../android/java/src/org/chromium/chrome/browser/infobar/SimpleConfirmInfoBarBuilder.java",
"../android/java/src/org/chromium/chrome/browser/infobar/SubresourceFilterInfoBar.java",
"../android/java/src/org/chromium/chrome/browser/infobar/TranslateInfoBar.java",
"../android/java/src/org/chromium/chrome/browser/infobar/UpdatePasswordInfoBar.java",
"../android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsSettings.java",
......
......@@ -2158,6 +2158,8 @@ split_static_library("ui") {
"android/infobars/save_password_infobar.h",
"android/infobars/simple_confirm_infobar_builder.cc",
"android/infobars/simple_confirm_infobar_builder.h",
"android/infobars/subresource_filter_infobar.cc",
"android/infobars/subresource_filter_infobar.h",
"android/infobars/translate_infobar.cc",
"android/infobars/translate_infobar.h",
"android/infobars/update_password_infobar.cc",
......
......@@ -4,6 +4,7 @@
#include "chrome/browser/ui/android/content_settings/subresource_filter_infobar_delegate.h"
#include "base/memory/ptr_util.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/android/android_theme_resources.h"
#include "chrome/browser/infobars/infobar_service.h"
......@@ -16,9 +17,8 @@
// static
void SubresourceFilterInfobarDelegate::Create(InfoBarService* infobar_service) {
infobar_service->AddInfoBar(infobar_service->CreateConfirmInfoBar(
std::unique_ptr<ConfirmInfoBarDelegate>(
new SubresourceFilterInfobarDelegate())));
infobar_service->AddInfoBar(CreateSubresourceFilterInfoBar(
base::WrapUnique(new SubresourceFilterInfobarDelegate())));
}
SubresourceFilterInfobarDelegate::SubresourceFilterInfobarDelegate()
......@@ -26,6 +26,11 @@ SubresourceFilterInfobarDelegate::SubresourceFilterInfobarDelegate()
SubresourceFilterInfobarDelegate::~SubresourceFilterInfobarDelegate() {}
base::string16 SubresourceFilterInfobarDelegate::GetExplanationText() const {
return l10n_util::GetStringUTF16(
IDS_FILTERED_DECEPTIVE_CONTENT_PROMPT_EXPLANATION);
}
infobars::InfoBarDelegate::InfoBarIdentifier
SubresourceFilterInfobarDelegate::GetIdentifier() const {
return SUBRESOURCE_FILTER_INFOBAR_DELEGATE_ANDROID;
......@@ -36,19 +41,18 @@ int SubresourceFilterInfobarDelegate::GetIconId() const {
}
base::string16 SubresourceFilterInfobarDelegate::GetMessageText() const {
return l10n_util::GetStringUTF16(
IDS_FILTERED_DECEPTIVE_CONTENT_PROMPT_EXPLANATION);
return l10n_util::GetStringUTF16(IDS_FILTERED_DECEPTIVE_CONTENT_PROMPT_TITLE);
}
int SubresourceFilterInfobarDelegate::GetButtons() const {
return BUTTON_CANCEL;
return BUTTON_OK | BUTTON_CANCEL;
}
base::string16 SubresourceFilterInfobarDelegate::GetButtonLabel(
InfoBarButton button) const {
DCHECK(BUTTON_CANCEL);
return l10n_util::GetStringUTF16(
IDS_FILTERED_DECEPTIVE_CONTENT_PROMPT_RELOAD);
(button == BUTTON_OK) ? IDS_OK
: IDS_FILTERED_DECEPTIVE_CONTENT_PROMPT_RELOAD);
}
bool SubresourceFilterInfobarDelegate::Cancel() {
......
......@@ -20,10 +20,10 @@ class SubresourceFilterInfobarDelegate : public ConfirmInfoBarDelegate {
// |infobar_service|.
static void Create(InfoBarService* infobar_service);
private:
SubresourceFilterInfobarDelegate();
~SubresourceFilterInfobarDelegate() override;
base::string16 GetExplanationText() const;
// ConfirmInfoBarDelegate:
infobars::InfoBarDelegate::InfoBarIdentifier GetIdentifier() const override;
int GetIconId() const override;
......@@ -32,7 +32,13 @@ class SubresourceFilterInfobarDelegate : public ConfirmInfoBarDelegate {
base::string16 GetButtonLabel(InfoBarButton button) const override;
bool Cancel() override;
private:
SubresourceFilterInfobarDelegate();
DISALLOW_COPY_AND_ASSIGN(SubresourceFilterInfobarDelegate);
};
std::unique_ptr<infobars::InfoBar> CreateSubresourceFilterInfoBar(
std::unique_ptr<SubresourceFilterInfobarDelegate> delegate);
#endif // CHROME_BROWSER_UI_ANDROID_CONTENT_SETTINGS_SUBRESOURCE_FILTER_INFOBAR_DELEGATE_H_
// 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 "chrome/browser/ui/android/infobars/subresource_filter_infobar.h"
#include <utility>
#include "base/android/jni_android.h"
#include "base/android/jni_string.h"
#include "base/memory/ptr_util.h"
#include "jni/SubresourceFilterInfoBar_jni.h"
using base::android::JavaParamRef;
SubresourceFilterInfoBar::SubresourceFilterInfoBar(
std::unique_ptr<SubresourceFilterInfobarDelegate> delegate)
: ConfirmInfoBar(std::move(delegate)) {}
SubresourceFilterInfoBar::~SubresourceFilterInfoBar() {}
base::android::ScopedJavaLocalRef<jobject>
SubresourceFilterInfoBar::CreateRenderInfoBar(JNIEnv* env) {
using base::android::ConvertUTF16ToJavaString;
using base::android::ScopedJavaLocalRef;
SubresourceFilterInfobarDelegate* subresource_filter_delegate =
static_cast<SubresourceFilterInfobarDelegate*>(delegate());
ScopedJavaLocalRef<jstring> reload_button_text = ConvertUTF16ToJavaString(
env, GetTextFor(ConfirmInfoBarDelegate::BUTTON_CANCEL));
ScopedJavaLocalRef<jstring> ok_button_text = ConvertUTF16ToJavaString(
env, GetTextFor(ConfirmInfoBarDelegate::BUTTON_OK));
ScopedJavaLocalRef<jstring> message_text = ConvertUTF16ToJavaString(
env, subresource_filter_delegate->GetMessageText());
ScopedJavaLocalRef<jstring> explanation_message = ConvertUTF16ToJavaString(
env, subresource_filter_delegate->GetExplanationText());
return Java_SubresourceFilterInfoBar_show(
env, GetEnumeratedIconId(), message_text, ok_button_text,
reload_button_text, explanation_message);
}
std::unique_ptr<infobars::InfoBar> CreateSubresourceFilterInfoBar(
std::unique_ptr<SubresourceFilterInfobarDelegate> delegate) {
return base::MakeUnique<SubresourceFilterInfoBar>(std::move(delegate));
}
// 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.
#ifndef CHROME_BROWSER_UI_ANDROID_INFOBARS_SUBRESOURCE_FILTER_INFOBAR_H_
#define CHROME_BROWSER_UI_ANDROID_INFOBARS_SUBRESOURCE_FILTER_INFOBAR_H_
#include "base/macros.h"
#include "chrome/browser/ui/android/content_settings/subresource_filter_infobar_delegate.h"
#include "chrome/browser/ui/android/infobars/confirm_infobar.h"
class SubresourceFilterInfoBar : public ConfirmInfoBar {
public:
explicit SubresourceFilterInfoBar(
std::unique_ptr<SubresourceFilterInfobarDelegate> delegate);
~SubresourceFilterInfoBar() override;
private:
// ConfirmInfoBar:
base::android::ScopedJavaLocalRef<jobject> CreateRenderInfoBar(
JNIEnv* env) override;
DISALLOW_COPY_AND_ASSIGN(SubresourceFilterInfoBar);
};
#endif // CHROME_BROWSER_UI_ANDROID_INFOBARS_SUBRESOURCE_FILTER_INFOBAR_H_
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