Commit 8fd3c8e4 authored by Evan Stade's avatar Evan Stade Committed by Commit Bot

Port //chrome/browser/ui/sms to components for use by WebLayer

This re-uses Chrome's WebOTP infobar for WebLayer. To test, run

  run_weblayer_shell https://web-otp-demo.glitch.me/ \
      --args="--web-otp-backend=\"web-otp-backend-sms-verification\""

And send an SMS appended with ^zlUfAL9a4nJ

Bug: 1035836
Change-Id: Ib68bcfc71a05bf60a2619a0ef8f503ce4fb7796c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2340112Reviewed-by: default avatarScott Violet <sky@chromium.org>
Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Reviewed-by: default avatarMajid Valipour <majidvp@chromium.org>
Commit-Queue: Evan Stade <estade@chromium.org>
Cr-Commit-Position: refs/heads/master@{#796210}
parent f01c98a1
...@@ -361,6 +361,7 @@ android_library("chrome_java") { ...@@ -361,6 +361,7 @@ android_library("chrome_java") {
"//components/browser_ui/settings/android:java", "//components/browser_ui/settings/android:java",
"//components/browser_ui/share/android:java", "//components/browser_ui/share/android:java",
"//components/browser_ui/site_settings/android:java", "//components/browser_ui/site_settings/android:java",
"//components/browser_ui/sms/android:java",
"//components/browser_ui/styles/android:java", "//components/browser_ui/styles/android:java",
"//components/browser_ui/util/android:java", "//components/browser_ui/util/android:java",
"//components/browser_ui/webshare/android:java", "//components/browser_ui/webshare/android:java",
...@@ -738,6 +739,7 @@ java_cpp_template("resource_id_javagen") { ...@@ -738,6 +739,7 @@ java_cpp_template("resource_id_javagen") {
"//components/resources/android/blocked_content_resource_id.h", "//components/resources/android/blocked_content_resource_id.h",
"//components/resources/android/page_info_resource_id.h", "//components/resources/android/page_info_resource_id.h",
"//components/resources/android/permissions_resource_id.h", "//components/resources/android/permissions_resource_id.h",
"//components/resources/android/sms_resource_id.h",
] ]
} }
...@@ -1029,6 +1031,7 @@ android_library("chrome_test_java") { ...@@ -1029,6 +1031,7 @@ android_library("chrome_test_java") {
"//components/browser_ui/share/android:javatests", "//components/browser_ui/share/android:javatests",
"//components/browser_ui/site_settings/android:java", "//components/browser_ui/site_settings/android:java",
"//components/browser_ui/site_settings/android:javatests", "//components/browser_ui/site_settings/android:javatests",
"//components/browser_ui/sms/android:java",
"//components/browser_ui/styles/android:java", "//components/browser_ui/styles/android:java",
"//components/browser_ui/util/android:java", "//components/browser_ui/util/android:java",
"//components/browser_ui/widget/android:java", "//components/browser_ui/widget/android:java",
...@@ -3140,7 +3143,6 @@ generate_jni("chrome_jni_headers") { ...@@ -3140,7 +3143,6 @@ generate_jni("chrome_jni_headers") {
"java/src/org/chromium/chrome/browser/signin/UnifiedConsentServiceBridge.java", "java/src/org/chromium/chrome/browser/signin/UnifiedConsentServiceBridge.java",
"java/src/org/chromium/chrome/browser/signin/WebSigninBridge.java", "java/src/org/chromium/chrome/browser/signin/WebSigninBridge.java",
"java/src/org/chromium/chrome/browser/site_settings/CookieControlsServiceBridge.java", "java/src/org/chromium/chrome/browser/site_settings/CookieControlsServiceBridge.java",
"java/src/org/chromium/chrome/browser/sms/SmsReceiverInfoBar.java",
"java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorSceneLayer.java", "java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorSceneLayer.java",
"java/src/org/chromium/chrome/browser/suggestions/SuggestionsEventReporterBridge.java", "java/src/org/chromium/chrome/browser/suggestions/SuggestionsEventReporterBridge.java",
"java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSites.java", "java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSites.java",
......
...@@ -783,7 +783,6 @@ chrome_java_resources = [ ...@@ -783,7 +783,6 @@ chrome_java_resources = [
"java/res/drawable/sharing_more.xml", "java/res/drawable/sharing_more.xml",
"java/res/drawable/sharing_print.xml", "java/res/drawable/sharing_print.xml",
"java/res/drawable/signin_header_animation.xml", "java/res/drawable/signin_header_animation.xml",
"java/res/drawable/smartphone_black_24dp.xml",
"java/res/drawable/store_locally_tooltip_background.xml", "java/res/drawable/store_locally_tooltip_background.xml",
"java/res/drawable/switch_to_tab.xml", "java/res/drawable/switch_to_tab.xml",
"java/res/drawable/tab_indicator.xml", "java/res/drawable/tab_indicator.xml",
......
...@@ -1438,8 +1438,6 @@ chrome_java_sources = [ ...@@ -1438,8 +1438,6 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/site_settings/ChromeWebappSettingsClient.java", "java/src/org/chromium/chrome/browser/site_settings/ChromeWebappSettingsClient.java",
"java/src/org/chromium/chrome/browser/site_settings/CookieControlsServiceBridge.java", "java/src/org/chromium/chrome/browser/site_settings/CookieControlsServiceBridge.java",
"java/src/org/chromium/chrome/browser/site_settings/ManageSpaceActivity.java", "java/src/org/chromium/chrome/browser/site_settings/ManageSpaceActivity.java",
"java/src/org/chromium/chrome/browser/sms/SmsReceiverInfoBar.java",
"java/src/org/chromium/chrome/browser/sms/SmsReceiverUma.java",
"java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorCoordinator.java", "java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorCoordinator.java",
"java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorMediator.java", "java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorMediator.java",
"java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorProperties.java", "java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorProperties.java",
......
...@@ -15,6 +15,7 @@ class ResourceId { ...@@ -15,6 +15,7 @@ class ResourceId {
#include "components/resources/android/blocked_content_resource_id.h" #include "components/resources/android/blocked_content_resource_id.h"
#include "components/resources/android/page_info_resource_id.h" #include "components/resources/android/page_info_resource_id.h"
#include "components/resources/android/permissions_resource_id.h" #include "components/resources/android/permissions_resource_id.h"
#include "components/resources/android/sms_resource_id.h"
}; };
return resourceList; return resourceList;
} }
......
...@@ -11,9 +11,6 @@ ...@@ -11,9 +11,6 @@
<color name="dark_action_bar_color">@color/google_blue_grey_900</color> <color name="dark_action_bar_color">@color/google_blue_grey_900</color>
<color name="dark_status_bar_color">#161E21</color> <color name="dark_status_bar_color">#161E21</color>
<!-- Infobar colors -->
<color name="infobar_icon_drawable_color">@color/default_icon_color_blue</color>
<!-- Tab Switcher Colors --> <!-- Tab Switcher Colors -->
<color name="tab_switcher_background">#14181C</color> <color name="tab_switcher_background">#14181C</color>
<color name="accessibility_tab_switcher_list_item">#252525</color> <color name="accessibility_tab_switcher_list_item">#252525</color>
......
...@@ -17,6 +17,7 @@ include_rules = [ ...@@ -17,6 +17,7 @@ include_rules = [
"+components/bookmarks/common/android/java/src/org/chromium/components/bookmarks", "+components/bookmarks/common/android/java/src/org/chromium/components/bookmarks",
"+components/browser_ui/notifications/android", "+components/browser_ui/notifications/android",
"+components/browser_ui/settings/android", "+components/browser_ui/settings/android",
"+components/browser_ui/sms/android",
"+components/browser_ui/styles/android", "+components/browser_ui/styles/android",
"+components/browser_ui/widget/android", "+components/browser_ui/widget/android",
"+components/crash/android", "+components/crash/android",
......
...@@ -24,6 +24,8 @@ import org.chromium.chrome.browser.tab.Tab; ...@@ -24,6 +24,8 @@ import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.test.ChromeActivityTestRule; import org.chromium.chrome.test.ChromeActivityTestRule;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.util.InfoBarUtil; import org.chromium.chrome.test.util.InfoBarUtil;
import org.chromium.components.browser_ui.sms.SmsReceiverInfoBar;
import org.chromium.components.browser_ui.sms.SmsReceiverUma;
import org.chromium.content_public.browser.test.util.CriteriaHelper; import org.chromium.content_public.browser.test.util.CriteriaHelper;
import org.chromium.content_public.browser.test.util.TestThreadUtils; import org.chromium.content_public.browser.test.util.TestThreadUtils;
import org.chromium.ui.KeyboardVisibilityDelegate; import org.chromium.ui.KeyboardVisibilityDelegate;
......
...@@ -10632,20 +10632,6 @@ Please help our engineers fix this problem. Tell us what happened right before y ...@@ -10632,20 +10632,6 @@ Please help our engineers fix this problem. Tell us what happened right before y
Open now Open now
</message> </message>
<!-- SMS strings -->
<message name="IDS_SMS_INFOBAR_TITLE" desc="Title shown when Chrome is waiting for an SMS on the user's behalf">
Verify your phone number
</message>
<message name="IDS_SMS_INFOBAR_STATUS_SMS_RECEIVED" desc="Message shown when Chrome has received an SMS on the user's behalf">
<ph name="ONE_TIME_CODE">$1<ex>123</ex></ph> is your code for <ph name="ORIGIN">$2<ex>example.com</ex></ph>
</message>
<message name="IDS_SMS_INFOBAR_BUTTON_OK" desc="Text for the button shown when Chrome has received an SMS on the user's behalf">
Verify
</message>
<!-- App uninstall prompt title --> <!-- App uninstall prompt title -->
<message name="IDS_PROMPT_APP_UNINSTALL_TITLE" desc="Title text for uninstalling an app."> <message name="IDS_PROMPT_APP_UNINSTALL_TITLE" desc="Title text for uninstalling an app.">
Uninstall "<ph name="APP_NAME">$1<ex>Gmail Checker</ex></ph>"? Uninstall "<ph name="APP_NAME">$1<ex>Gmail Checker</ex></ph>"?
......
...@@ -2939,6 +2939,7 @@ static_library("browser") { ...@@ -2939,6 +2939,7 @@ static_library("browser") {
"//chrome/services/media_gallery_util/public/cpp", "//chrome/services/media_gallery_util/public/cpp",
"//components/autofill_assistant/browser", "//components/autofill_assistant/browser",
"//components/browser_ui/site_settings/android", "//components/browser_ui/site_settings/android",
"//components/browser_ui/sms/android",
"//components/browser_ui/util/android", "//components/browser_ui/util/android",
"//components/cbor", "//components/cbor",
"//components/cdm/browser", "//components/cdm/browser",
......
...@@ -5,6 +5,7 @@ include_rules = [ ...@@ -5,6 +5,7 @@ include_rules = [
"+chrome/android/test_support_jni_headers", "+chrome/android/test_support_jni_headers",
"+chrome_jni_registration/chrome_jni_registration.h", "+chrome_jni_registration/chrome_jni_registration.h",
"+components/browser_ui/site_settings/android", "+components/browser_ui/site_settings/android",
"+components/browser_ui/sms/android",
"+components/browser_ui/util/android/url_constants.h", "+components/browser_ui/util/android/url_constants.h",
"+components/infobars/android", "+components/infobars/android",
"+components/query_tiles", "+components/query_tiles",
......
...@@ -43,8 +43,6 @@ DECLARE_RESOURCE_ID(IDR_ANDROID_INFOBAR_SAFETYTIP_SHIELD, ...@@ -43,8 +43,6 @@ DECLARE_RESOURCE_ID(IDR_ANDROID_INFOBAR_SAFETYTIP_SHIELD,
DECLARE_RESOURCE_ID(IDR_ANDROID_INFOBAR_SAVE_PASSWORD, DECLARE_RESOURCE_ID(IDR_ANDROID_INFOBAR_SAVE_PASSWORD,
R.drawable.ic_vpn_key_blue) R.drawable.ic_vpn_key_blue)
DECLARE_RESOURCE_ID(IDR_ANDROID_INFOBAR_TRANSLATE, R.drawable.infobar_translate) DECLARE_RESOURCE_ID(IDR_ANDROID_INFOBAR_TRANSLATE, R.drawable.infobar_translate)
DECLARE_RESOURCE_ID(IDR_ANDROID_INFOBAR_PHONE_ICON,
R.drawable.smartphone_black_24dp)
LINK_RESOURCE_ID(IDR_AUTOFILL_GOOGLE_PAY_WITH_DIVIDER, LINK_RESOURCE_ID(IDR_AUTOFILL_GOOGLE_PAY_WITH_DIVIDER,
R.drawable.google_pay_with_divider) R.drawable.google_pay_with_divider)
......
...@@ -57,6 +57,7 @@ void ResourceMapper::ConstructMap() { ...@@ -57,6 +57,7 @@ void ResourceMapper::ConstructMap() {
#include "components/resources/android/blocked_content_resource_id.h" #include "components/resources/android/blocked_content_resource_id.h"
#include "components/resources/android/page_info_resource_id.h" #include "components/resources/android/page_info_resource_id.h"
#include "components/resources/android/permissions_resource_id.h" #include "components/resources/android/permissions_resource_id.h"
#include "components/resources/android/sms_resource_id.h"
#undef LINK_RESOURCE_ID #undef LINK_RESOURCE_ID
#undef DECLARE_RESOURCE_ID #undef DECLARE_RESOURCE_ID
// Make sure ID list sizes match up. // Make sure ID list sizes match up.
......
...@@ -43,8 +43,8 @@ ...@@ -43,8 +43,8 @@
#include "chrome/browser/ssl/security_state_tab_helper.h" #include "chrome/browser/ssl/security_state_tab_helper.h"
#include "chrome/browser/ui/android/device_dialog/bluetooth_chooser_android.h" #include "chrome/browser/ui/android/device_dialog/bluetooth_chooser_android.h"
#include "chrome/browser/ui/android/device_dialog/bluetooth_scanning_prompt_android.h" #include "chrome/browser/ui/android/device_dialog/bluetooth_scanning_prompt_android.h"
#include "chrome/browser/ui/android/infobars/chrome_confirm_infobar.h"
#include "chrome/browser/ui/android/infobars/framebust_block_infobar.h" #include "chrome/browser/ui/android/infobars/framebust_block_infobar.h"
#include "chrome/browser/ui/android/sms/sms_infobar.h"
#include "chrome/browser/ui/android/tab_model/tab_model_list.h" #include "chrome/browser/ui/android/tab_model/tab_model_list.h"
#include "chrome/browser/ui/autofill/chrome_autofill_client.h" #include "chrome/browser/ui/autofill/chrome_autofill_client.h"
#include "chrome/browser/ui/blocked_content/chrome_popup_navigation_delegate.h" #include "chrome/browser/ui/blocked_content/chrome_popup_navigation_delegate.h"
...@@ -58,6 +58,7 @@ ...@@ -58,6 +58,7 @@
#include "components/autofill/content/browser/content_autofill_driver_factory.h" #include "components/autofill/content/browser/content_autofill_driver_factory.h"
#include "components/blocked_content/popup_blocker.h" #include "components/blocked_content/popup_blocker.h"
#include "components/blocked_content/popup_tracker.h" #include "components/blocked_content/popup_tracker.h"
#include "components/browser_ui/sms/android/sms_infobar.h"
#include "components/browser_ui/util/android/url_constants.h" #include "components/browser_ui/util/android/url_constants.h"
#include "components/find_in_page/find_notification_details.h" #include "components/find_in_page/find_notification_details.h"
#include "components/find_in_page/find_tab_helper.h" #include "components/find_in_page/find_tab_helper.h"
...@@ -212,8 +213,10 @@ void TabWebContentsDelegateAndroid::CreateSmsPrompt( ...@@ -212,8 +213,10 @@ void TabWebContentsDelegateAndroid::CreateSmsPrompt(
base::OnceClosure on_confirm, base::OnceClosure on_confirm,
base::OnceClosure on_cancel) { base::OnceClosure on_cancel) {
auto* web_contents = content::WebContents::FromRenderFrameHost(host); auto* web_contents = content::WebContents::FromRenderFrameHost(host);
SmsInfoBar::Create(web_contents, origin, one_time_code, std::move(on_confirm), sms::SmsInfoBar::Create(
std::move(on_cancel)); web_contents, InfoBarService::FromWebContents(web_contents),
ChromeConfirmInfoBar::GetResourceIdMapper(), origin, one_time_code,
std::move(on_confirm), std::move(on_cancel));
} }
std::unique_ptr<content::BluetoothScanningPrompt> std::unique_ptr<content::BluetoothScanningPrompt>
......
...@@ -740,10 +740,6 @@ static_library("ui") { ...@@ -740,10 +740,6 @@ static_library("ui") {
"android/safe_browsing/password_reuse_dialog_view_android.cc", "android/safe_browsing/password_reuse_dialog_view_android.cc",
"android/safe_browsing/password_reuse_dialog_view_android.h", "android/safe_browsing/password_reuse_dialog_view_android.h",
"android/simple_message_box_android.cc", "android/simple_message_box_android.cc",
"android/sms/sms_infobar.cc",
"android/sms/sms_infobar.h",
"android/sms/sms_infobar_delegate.cc",
"android/sms/sms_infobar_delegate.h",
"android/ssl_client_certificate_selector.cc", "android/ssl_client_certificate_selector.cc",
"android/status_tray_android.cc", "android/status_tray_android.cc",
"android/tab_contents/chrome_web_contents_view_delegate_android.cc", "android/tab_contents/chrome_web_contents_view_delegate_android.cc",
......
...@@ -25,12 +25,16 @@ std::unique_ptr<infobars::InfoBar> InfoBarService::CreateConfirmInfoBar( ...@@ -25,12 +25,16 @@ std::unique_ptr<infobars::InfoBar> InfoBarService::CreateConfirmInfoBar(
ChromeConfirmInfoBar::ChromeConfirmInfoBar( ChromeConfirmInfoBar::ChromeConfirmInfoBar(
std::unique_ptr<ConfirmInfoBarDelegate> delegate) std::unique_ptr<ConfirmInfoBarDelegate> delegate)
: infobars::ConfirmInfoBar( : infobars::ConfirmInfoBar(std::move(delegate), GetResourceIdMapper()) {}
std::move(delegate),
base::BindRepeating(&ResourceMapper::MapToJavaDrawableId)) {}
ChromeConfirmInfoBar::~ChromeConfirmInfoBar() {} ChromeConfirmInfoBar::~ChromeConfirmInfoBar() {}
// static
infobars::InfoBarAndroid::ResourceIdMapper
ChromeConfirmInfoBar::GetResourceIdMapper() {
return base::BindRepeating(&ResourceMapper::MapToJavaDrawableId);
}
TabAndroid* ChromeConfirmInfoBar::GetTab() { TabAndroid* ChromeConfirmInfoBar::GetTab() {
content::WebContents* web_contents = content::WebContents* web_contents =
InfoBarService::WebContentsFromInfoBar(this); InfoBarService::WebContentsFromInfoBar(this);
......
...@@ -20,6 +20,8 @@ class ChromeConfirmInfoBar : public infobars::ConfirmInfoBar { ...@@ -20,6 +20,8 @@ class ChromeConfirmInfoBar : public infobars::ConfirmInfoBar {
ChromeConfirmInfoBar(const ChromeConfirmInfoBar&) = delete; ChromeConfirmInfoBar(const ChromeConfirmInfoBar&) = delete;
ChromeConfirmInfoBar& operator=(const ChromeConfirmInfoBar&) = delete; ChromeConfirmInfoBar& operator=(const ChromeConfirmInfoBar&) = delete;
static ResourceIdMapper GetResourceIdMapper();
protected: protected:
TabAndroid* GetTab(); TabAndroid* GetTab();
}; };
......
file://content/browser/sms/OWNERS
# COMPONENT: Blink>SMS
# TEAM: fugu-dev@chromium.org
# Copyright 2020 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.
import("//build/config/android/rules.gni")
source_set("android") {
sources = [
"sms_infobar.cc",
"sms_infobar.h",
"sms_infobar_delegate.cc",
"sms_infobar_delegate.h",
]
deps = [
":jni_headers",
"//base",
"//components/infobars/android",
"//components/infobars/core",
"//components/resources:android_resources",
"//components/strings",
"//components/url_formatter",
"//content/public/browser",
"//ui/android",
"//url",
]
}
generate_jni("jni_headers") {
sources = [
"java/src/org/chromium/components/browser_ui/sms/SmsReceiverInfoBar.java",
]
}
android_library("java") {
sources = [
"java/src/org/chromium/components/browser_ui/sms/SmsReceiverInfoBar.java",
"java/src/org/chromium/components/browser_ui/sms/SmsReceiverUma.java",
]
deps = [
"//base:base_java",
"//components/browser_ui/styles/android:java_resources",
"//components/infobars/android:java",
"//third_party/android_deps:androidx_annotation_annotation_java",
"//ui/android:ui_java",
"//url:gurl_java",
]
}
include_rules = [
"+components/infobars/android",
"+components/infobars/core",
"+components/resources/android",
"+components/strings",
"+components/url_formatter",
"+content/public",
"+ui/android",
"+ui/base",
]
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
package org.chromium.chrome.browser.sms; package org.chromium.components.browser_ui.sms;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
...@@ -13,7 +13,7 @@ import androidx.annotation.VisibleForTesting; ...@@ -13,7 +13,7 @@ import androidx.annotation.VisibleForTesting;
import org.chromium.base.Log; import org.chromium.base.Log;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.chrome.R; import org.chromium.components.browser_ui.styles.R;
import org.chromium.components.infobars.ConfirmInfoBar; import org.chromium.components.infobars.ConfirmInfoBar;
import org.chromium.components.infobars.InfoBarControlLayout; import org.chromium.components.infobars.InfoBarControlLayout;
import org.chromium.components.infobars.InfoBarLayout; import org.chromium.components.infobars.InfoBarLayout;
...@@ -32,7 +32,7 @@ public class SmsReceiverInfoBar extends ConfirmInfoBar { ...@@ -32,7 +32,7 @@ public class SmsReceiverInfoBar extends ConfirmInfoBar {
@VisibleForTesting @VisibleForTesting
@CalledByNative @CalledByNative
static SmsReceiverInfoBar create(WindowAndroid windowAndroid, int iconId, String title, public static SmsReceiverInfoBar create(WindowAndroid windowAndroid, int iconId, String title,
String message, String okButtonLabel) { String message, String okButtonLabel) {
if (DEBUG) Log.d(TAG, "SmsReceiverInfoBar.create()"); if (DEBUG) Log.d(TAG, "SmsReceiverInfoBar.create()");
return new SmsReceiverInfoBar(windowAndroid, iconId, title, message, okButtonLabel); return new SmsReceiverInfoBar(windowAndroid, iconId, title, message, okButtonLabel);
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
package org.chromium.chrome.browser.sms; package org.chromium.components.browser_ui.sms;
import androidx.annotation.IntDef; import androidx.annotation.IntDef;
...@@ -14,7 +14,7 @@ import java.lang.annotation.RetentionPolicy; ...@@ -14,7 +14,7 @@ import java.lang.annotation.RetentionPolicy;
/** /**
* Helper Class for Sms Receiver UMA Collection. * Helper Class for Sms Receiver UMA Collection.
*/ */
final class SmsReceiverUma { public final class SmsReceiverUma {
// Note: these values must match the SMSReceiverInfobar enum in enums.xml. // Note: these values must match the SMSReceiverInfobar enum in enums.xml.
// Only add new values at the end, right before NUM_ENTRIES. // Only add new values at the end, right before NUM_ENTRIES.
@IntDef({InfobarAction.SHOWN, InfobarAction.KEYBOARD_DISMISSED}) @IntDef({InfobarAction.SHOWN, InfobarAction.KEYBOARD_DISMISSED})
......
...@@ -2,12 +2,11 @@ ...@@ -2,12 +2,11 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "chrome/browser/ui/android/sms/sms_infobar.h" #include "components/browser_ui/sms/android/sms_infobar.h"
#include "base/android/jni_string.h" #include "base/android/jni_string.h"
#include "chrome/android/chrome_jni_headers/SmsReceiverInfoBar_jni.h" #include "components/browser_ui/sms/android/jni_headers/SmsReceiverInfoBar_jni.h"
#include "chrome/browser/infobars/infobar_service.h" #include "components/browser_ui/sms/android/sms_infobar_delegate.h"
#include "chrome/browser/ui/android/sms/sms_infobar_delegate.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
#include "ui/android/window_android.h" #include "ui/android/window_android.h"
#include "url/origin.h" #include "url/origin.h"
...@@ -16,23 +15,28 @@ using base::android::ConvertUTF16ToJavaString; ...@@ -16,23 +15,28 @@ using base::android::ConvertUTF16ToJavaString;
using base::android::ScopedJavaLocalRef; using base::android::ScopedJavaLocalRef;
using infobars::InfoBarDelegate; using infobars::InfoBarDelegate;
namespace sms {
// static // static
void SmsInfoBar::Create(content::WebContents* web_contents, void SmsInfoBar::Create(content::WebContents* web_contents,
infobars::InfoBarManager* manager,
const ResourceIdMapper& resource_mapper,
const url::Origin& origin, const url::Origin& origin,
const std::string& one_time_code, const std::string& one_time_code,
base::OnceClosure on_confirm, base::OnceClosure on_confirm,
base::OnceClosure on_cancel) { base::OnceClosure on_cancel) {
auto delegate = std::make_unique<SmsInfoBarDelegate>( auto delegate = std::make_unique<SmsInfoBarDelegate>(
origin, one_time_code, std::move(on_confirm), std::move(on_cancel)); origin, one_time_code, std::move(on_confirm), std::move(on_cancel));
auto infobar = auto infobar = std::make_unique<SmsInfoBar>(web_contents, resource_mapper,
std::make_unique<SmsInfoBar>(web_contents, std::move(delegate)); std::move(delegate));
auto* infobar_service = InfoBarService::FromWebContents(web_contents); manager->AddInfoBar(std::move(infobar));
infobar_service->AddInfoBar(std::move(infobar));
} }
SmsInfoBar::SmsInfoBar(content::WebContents* web_contents, SmsInfoBar::SmsInfoBar(content::WebContents* web_contents,
const ResourceIdMapper& resource_mapper,
std::unique_ptr<SmsInfoBarDelegate> delegate) std::unique_ptr<SmsInfoBarDelegate> delegate)
: ChromeConfirmInfoBar(std::move(delegate)), web_contents_(web_contents) {} : infobars::ConfirmInfoBar(std::move(delegate), resource_mapper),
web_contents_(web_contents) {}
SmsInfoBar::~SmsInfoBar() = default; SmsInfoBar::~SmsInfoBar() = default;
...@@ -51,3 +55,5 @@ ScopedJavaLocalRef<jobject> SmsInfoBar::CreateRenderInfoBar(JNIEnv* env) { ...@@ -51,3 +55,5 @@ ScopedJavaLocalRef<jobject> SmsInfoBar::CreateRenderInfoBar(JNIEnv* env) {
return Java_SmsReceiverInfoBar_create(env, window_android, GetJavaIconId(), return Java_SmsReceiverInfoBar_create(env, window_android, GetJavaIconId(),
title, message, button); title, message, button);
} }
} // namespace sms
...@@ -2,14 +2,14 @@ ...@@ -2,14 +2,14 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_ANDROID_SMS_SMS_INFOBAR_H_ #ifndef COMPONENTS_BROWSER_UI_SMS_ANDROID_SMS_INFOBAR_H_
#define CHROME_BROWSER_UI_ANDROID_SMS_SMS_INFOBAR_H_ #define COMPONENTS_BROWSER_UI_SMS_ANDROID_SMS_INFOBAR_H_
#include <memory> #include <memory>
#include "base/callback_forward.h" #include "base/callback_forward.h"
#include "base/macros.h" #include "base/macros.h"
#include "chrome/browser/ui/android/infobars/chrome_confirm_infobar.h" #include "components/infobars/android/confirm_infobar.h"
namespace content { namespace content {
class WebContents; class WebContents;
...@@ -19,17 +19,22 @@ namespace url { ...@@ -19,17 +19,22 @@ namespace url {
class Origin; class Origin;
} // namespace url } // namespace url
namespace sms {
class SmsInfoBarDelegate; class SmsInfoBarDelegate;
class SmsInfoBar : public ChromeConfirmInfoBar { class SmsInfoBar : public infobars::ConfirmInfoBar {
public: public:
SmsInfoBar(content::WebContents* web_contents, SmsInfoBar(content::WebContents* web_contents,
const ResourceIdMapper& resource_mapper,
std::unique_ptr<SmsInfoBarDelegate> delegate); std::unique_ptr<SmsInfoBarDelegate> delegate);
~SmsInfoBar() override; ~SmsInfoBar() override;
// Creates an SMS receiver infobar and delegate and adds it to // Creates an SMS receiver infobar and delegate and adds it to
// |infobar_service|. // |infobar_service|.
static void Create(content::WebContents* web_contents, static void Create(content::WebContents* web_contents,
infobars::InfoBarManager* manager,
const ResourceIdMapper& resource_mapper,
const url::Origin& origin, const url::Origin& origin,
const std::string& one_time_code, const std::string& one_time_code,
base::OnceCallback<void()> on_confirm, base::OnceCallback<void()> on_confirm,
...@@ -45,4 +50,6 @@ class SmsInfoBar : public ChromeConfirmInfoBar { ...@@ -45,4 +50,6 @@ class SmsInfoBar : public ChromeConfirmInfoBar {
DISALLOW_COPY_AND_ASSIGN(SmsInfoBar); DISALLOW_COPY_AND_ASSIGN(SmsInfoBar);
}; };
#endif // CHROME_BROWSER_UI_ANDROID_SMS_SMS_INFOBAR_H_ } // namespace sms
#endif // COMPONENTS_BROWSER_UI_SMS_ANDROID_SMS_INFOBAR_H_
...@@ -2,20 +2,21 @@ ...@@ -2,20 +2,21 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "chrome/browser/ui/android/sms/sms_infobar_delegate.h" #include "components/browser_ui/sms/android/sms_infobar_delegate.h"
#include "base/check_op.h" #include "base/check_op.h"
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "build/build_config.h" #include "build/build_config.h"
#include "chrome/app/vector_icons/vector_icons.h"
#include "chrome/browser/android/android_theme_resources.h"
#include "chrome/grit/generated_resources.h"
#include "components/infobars/core/infobar.h" #include "components/infobars/core/infobar.h"
#include "components/resources/android/theme_resources.h"
#include "components/strings/grit/components_strings.h"
#include "components/url_formatter/elide_url.h" #include "components/url_formatter/elide_url.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
#include "ui/base/l10n/l10n_util.h" #include "ui/base/l10n/l10n_util.h"
#include "url/origin.h" #include "url/origin.h"
namespace sms {
SmsInfoBarDelegate::SmsInfoBarDelegate(const url::Origin& origin, SmsInfoBarDelegate::SmsInfoBarDelegate(const url::Origin& origin,
const std::string& one_time_code, const std::string& one_time_code,
base::OnceClosure on_confirm, base::OnceClosure on_confirm,
...@@ -65,3 +66,5 @@ void SmsInfoBarDelegate::InfoBarDismissed() { ...@@ -65,3 +66,5 @@ void SmsInfoBarDelegate::InfoBarDismissed() {
base::string16 SmsInfoBarDelegate::GetTitle() const { base::string16 SmsInfoBarDelegate::GetTitle() const {
return l10n_util::GetStringUTF16(IDS_SMS_INFOBAR_TITLE); return l10n_util::GetStringUTF16(IDS_SMS_INFOBAR_TITLE);
} }
} // namespace sms
...@@ -2,17 +2,18 @@ ...@@ -2,17 +2,18 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_ANDROID_SMS_SMS_INFOBAR_DELEGATE_H_ #ifndef COMPONENTS_BROWSER_UI_SMS_ANDROID_SMS_INFOBAR_DELEGATE_H_
#define CHROME_BROWSER_UI_ANDROID_SMS_SMS_INFOBAR_DELEGATE_H_ #define COMPONENTS_BROWSER_UI_SMS_ANDROID_SMS_INFOBAR_DELEGATE_H_
#include "base/callback.h" #include "base/callback.h"
#include "base/macros.h" #include "base/macros.h"
#include "components/infobars/core/confirm_infobar_delegate.h" #include "components/infobars/core/confirm_infobar_delegate.h"
#include "url/origin.h" #include "url/origin.h"
namespace sms {
// This class configures an infobar shown when an SMS is received and the user // This class configures an infobar shown when an SMS is received and the user
// is asked for confirmation that it should be shared with the site. Upon // is asked for confirmation that it should be shared with the site (WebOTP).
// confirmation, the infobar calls back its caller.
class SmsInfoBarDelegate : public ConfirmInfoBarDelegate { class SmsInfoBarDelegate : public ConfirmInfoBarDelegate {
public: public:
SmsInfoBarDelegate(const url::Origin& origin, SmsInfoBarDelegate(const url::Origin& origin,
...@@ -40,4 +41,6 @@ class SmsInfoBarDelegate : public ConfirmInfoBarDelegate { ...@@ -40,4 +41,6 @@ class SmsInfoBarDelegate : public ConfirmInfoBarDelegate {
DISALLOW_COPY_AND_ASSIGN(SmsInfoBarDelegate); DISALLOW_COPY_AND_ASSIGN(SmsInfoBarDelegate);
}; };
#endif // CHROME_BROWSER_UI_ANDROID_SMS_SMS_INFOBAR_DELEGATE_H_ } // namespace sms
#endif // COMPONENTS_BROWSER_UI_SMS_ANDROID_SMS_INFOBAR_DELEGATE_H_
...@@ -114,6 +114,7 @@ android_resources("java_resources") { ...@@ -114,6 +114,7 @@ android_resources("java_resources") {
"java/res/drawable/ic_warning_red_16dp.xml", "java/res/drawable/ic_warning_red_16dp.xml",
"java/res/drawable/ic_warning_red_24dp.xml", "java/res/drawable/ic_warning_red_24dp.xml",
"java/res/drawable/permission_location.xml", "java/res/drawable/permission_location.xml",
"java/res/drawable/smartphone_black_24dp.xml",
"java/res/values-night/colors.xml", "java/res/values-night/colors.xml",
"java/res/values/colors.xml", "java/res/values/colors.xml",
"java/res/values/dimens.xml", "java/res/values/dimens.xml",
......
...@@ -18,6 +18,9 @@ ...@@ -18,6 +18,9 @@
@color/default_bg_color_dark_elev_3 @color/default_bg_color_dark_elev_3
</color> </color>
<!-- Infobar colors -->
<color name="infobar_icon_drawable_color">@color/default_icon_color_blue</color>
<!-- Control colors for toggles, checkboxes, ratio buttons, list item highlight, and accent. <!-- Control colors for toggles, checkboxes, ratio buttons, list item highlight, and accent.
Note that these should NOT be used for icon tint. --> Note that these should NOT be used for icon tint. -->
<color name="control_normal_color">@color/default_control_color_normal_light</color> <color name="control_normal_color">@color/default_control_color_normal_light</color>
......
...@@ -312,6 +312,7 @@ ...@@ -312,6 +312,7 @@
<part file="security_interstitials_strings.grdp" /> <part file="security_interstitials_strings.grdp" />
<part file="security_state_strings.grdp" /> <part file="security_state_strings.grdp" />
<part file="send_tab_to_self_strings.grdp" /> <part file="send_tab_to_self_strings.grdp" />
<part file="sms_strings.grdp" />
<part file="ssl_errors_strings.grdp" /> <part file="ssl_errors_strings.grdp" />
<part file="sync_ui_strings.grdp" /> <part file="sync_ui_strings.grdp" />
<part file="translate_strings.grdp" /> <part file="translate_strings.grdp" />
......
...@@ -111,6 +111,7 @@ if (is_android) { ...@@ -111,6 +111,7 @@ if (is_android) {
"android/blocked_content_resource_id.h", "android/blocked_content_resource_id.h",
"android/page_info_resource_id.h", "android/page_info_resource_id.h",
"android/permissions_resource_id.h", "android/permissions_resource_id.h",
"android/sms_resource_id.h",
"android/theme_resources.h", "android/theme_resources.h",
] ]
} }
......
// Copyright 2020 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.
// This file maps resource IDs to Android resource IDs.
// Presence of regular include guards is checked by:
// 1. cpplint
// 2. a custom presubmit in src/PRESUBMIT.py
// 3. clang (but it only checks the guard is correct if present)
// Disable the first two with these magic comments:
// NOLINT(build/header_guard)
// no-include-guard-because-multiply-included
// LINK_RESOURCE_ID is used for IDs that come from a .grd file.
#ifndef LINK_RESOURCE_ID
#error "LINK_RESOURCE_ID should be defined before including this file"
#endif
// DECLARE_RESOURCE_ID is used for IDs that don't have .grd entries, and
// are only declared in this file.
#ifndef DECLARE_RESOURCE_ID
#error "DECLARE_RESOURCE_ID should be defined before including this file"
#endif
// InfoBar resources.
DECLARE_RESOURCE_ID(IDR_ANDROID_INFOBAR_PHONE_ICON,
R.drawable.smartphone_black_24dp)
...@@ -17,6 +17,7 @@ enum { ...@@ -17,6 +17,7 @@ enum {
#include "components/resources/android/blocked_content_resource_id.h" #include "components/resources/android/blocked_content_resource_id.h"
#include "components/resources/android/page_info_resource_id.h" #include "components/resources/android/page_info_resource_id.h"
#include "components/resources/android/permissions_resource_id.h" #include "components/resources/android/permissions_resource_id.h"
#include "components/resources/android/sms_resource_id.h"
ANDROID_COMPONENTS_RESOURCE_ID_MAX, ANDROID_COMPONENTS_RESOURCE_ID_MAX,
}; };
......
<?xml version="1.0" encoding="utf-8"?>
<grit-part>
<message name="IDS_SMS_INFOBAR_TITLE" desc="Title shown when the browser is waiting for an SMS on the user's behalf">
Verify your phone number
</message>
<message name="IDS_SMS_INFOBAR_STATUS_SMS_RECEIVED" desc="Message shown when the browser has received an SMS on the user's behalf">
<ph name="ONE_TIME_CODE">$1<ex>123</ex></ph> is your code for <ph name="ORIGIN">$2<ex>example.com</ex></ph>
</message>
<message name="IDS_SMS_INFOBAR_BUTTON_OK" desc="Text for the button shown when the browser has received an SMS on the user's behalf">
Verify
</message>
</grit-part>
...@@ -550,6 +550,7 @@ source_set("weblayer_lib_base") { ...@@ -550,6 +550,7 @@ source_set("weblayer_lib_base") {
"//components/autofill/android/provider", "//components/autofill/android/provider",
"//components/browser_ui/client_certificate/android", "//components/browser_ui/client_certificate/android",
"//components/browser_ui/site_settings/android", "//components/browser_ui/site_settings/android",
"//components/browser_ui/sms/android",
"//components/cdm/browser", "//components/cdm/browser",
"//components/content_settings/android", "//components/content_settings/android",
"//components/crash/android:crash_android", "//components/crash/android:crash_android",
......
...@@ -172,6 +172,8 @@ bool ContentMainDelegateImpl::BasicStartupComplete(int* exit_code) { ...@@ -172,6 +172,8 @@ bool ContentMainDelegateImpl::BasicStartupComplete(int* exit_code) {
media::kPictureInPictureAPI, media::kPictureInPictureAPI,
::features::kDisableDeJelly, ::features::kDisableDeJelly,
::features::kDynamicColorGamut, ::features::kDynamicColorGamut,
#else
::features::kSmsReceiver,
#endif #endif
}; };
......
...@@ -41,6 +41,7 @@ void ConstructMap() { ...@@ -41,6 +41,7 @@ void ConstructMap() {
#include "components/resources/android/blocked_content_resource_id.h" #include "components/resources/android/blocked_content_resource_id.h"
#include "components/resources/android/page_info_resource_id.h" #include "components/resources/android/page_info_resource_id.h"
#include "components/resources/android/permissions_resource_id.h" #include "components/resources/android/permissions_resource_id.h"
#include "components/resources/android/sms_resource_id.h"
#undef LINK_RESOURCE_ID #undef LINK_RESOURCE_ID
#undef DECLARE_RESOURCE_ID #undef DECLARE_RESOURCE_ID
// Make sure ID list sizes match up. // Make sure ID list sizes match up.
......
...@@ -22,8 +22,14 @@ InfoBarService::~InfoBarService() {} ...@@ -22,8 +22,14 @@ InfoBarService::~InfoBarService() {}
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
std::unique_ptr<infobars::InfoBar> InfoBarService::CreateConfirmInfoBar( std::unique_ptr<infobars::InfoBar> InfoBarService::CreateConfirmInfoBar(
std::unique_ptr<ConfirmInfoBarDelegate> delegate) { std::unique_ptr<ConfirmInfoBarDelegate> delegate) {
return std::make_unique<infobars::ConfirmInfoBar>( return std::make_unique<infobars::ConfirmInfoBar>(std::move(delegate),
std::move(delegate), base::BindRepeating(&MapToJavaDrawableId)); GetResourceIdMapper());
}
// static
infobars::InfoBarAndroid::ResourceIdMapper
InfoBarService::GetResourceIdMapper() {
return base::BindRepeating(&MapToJavaDrawableId);
} }
#endif // if defined(OS_ANDROID) #endif // if defined(OS_ANDROID)
......
...@@ -13,6 +13,10 @@ ...@@ -13,6 +13,10 @@
#include "components/infobars/content/content_infobar_manager.h" #include "components/infobars/content/content_infobar_manager.h"
#include "content/public/browser/web_contents_user_data.h" #include "content/public/browser/web_contents_user_data.h"
#if defined(OS_ANDROID)
#include "components/infobars/android/infobar_android.h"
#endif
namespace content { namespace content {
class WebContents; class WebContents;
} }
...@@ -33,6 +37,10 @@ class InfoBarService : public infobars::ContentInfoBarManager, ...@@ -33,6 +37,10 @@ class InfoBarService : public infobars::ContentInfoBarManager,
std::unique_ptr<infobars::InfoBar> CreateConfirmInfoBar( std::unique_ptr<infobars::InfoBar> CreateConfirmInfoBar(
std::unique_ptr<ConfirmInfoBarDelegate> delegate) override; std::unique_ptr<ConfirmInfoBarDelegate> delegate) override;
#if defined(OS_ANDROID)
static infobars::InfoBarAndroid::ResourceIdMapper GetResourceIdMapper();
#endif
protected: protected:
explicit InfoBarService(content::WebContents* web_contents); explicit InfoBarService(content::WebContents* web_contents);
......
...@@ -47,6 +47,7 @@ java_cpp_template("resource_id_javagen") { ...@@ -47,6 +47,7 @@ java_cpp_template("resource_id_javagen") {
"//components/resources/android/blocked_content_resource_id.h", "//components/resources/android/blocked_content_resource_id.h",
"//components/resources/android/page_info_resource_id.h", "//components/resources/android/page_info_resource_id.h",
"//components/resources/android/permissions_resource_id.h", "//components/resources/android/permissions_resource_id.h",
"//components/resources/android/sms_resource_id.h",
] ]
} }
...@@ -144,6 +145,7 @@ android_library("java") { ...@@ -144,6 +145,7 @@ android_library("java") {
"//components/browser_ui/settings/android:java", "//components/browser_ui/settings/android:java",
"//components/browser_ui/share/android:java", "//components/browser_ui/share/android:java",
"//components/browser_ui/site_settings/android:java", "//components/browser_ui/site_settings/android:java",
"//components/browser_ui/sms/android:java",
"//components/browser_ui/styles/android:java", "//components/browser_ui/styles/android:java",
"//components/browser_ui/util/android:java", "//components/browser_ui/util/android:java",
"//components/browser_ui/webshare/android:java", "//components/browser_ui/webshare/android:java",
......
...@@ -14,6 +14,7 @@ class ResourceId { ...@@ -14,6 +14,7 @@ class ResourceId {
#include "components/resources/android/blocked_content_resource_id.h" #include "components/resources/android/blocked_content_resource_id.h"
#include "components/resources/android/page_info_resource_id.h" #include "components/resources/android/page_info_resource_id.h"
#include "components/resources/android/permissions_resource_id.h" #include "components/resources/android/permissions_resource_id.h"
#include "components/resources/android/sms_resource_id.h"
}; };
return resourceList; return resourceList;
} }
......
...@@ -89,6 +89,7 @@ ...@@ -89,6 +89,7 @@
#include "base/json/json_writer.h" #include "base/json/json_writer.h"
#include "base/trace_event/trace_event.h" #include "base/trace_event/trace_event.h"
#include "components/autofill/android/provider/autofill_provider_android.h" #include "components/autofill/android/provider/autofill_provider_android.h"
#include "components/browser_ui/sms/android/sms_infobar.h"
#include "components/embedder_support/android/contextmenu/context_menu_builder.h" #include "components/embedder_support/android/contextmenu/context_menu_builder.h"
#include "components/embedder_support/android/delegate/color_chooser_android.h" #include "components/embedder_support/android/delegate/color_chooser_android.h"
#include "components/javascript_dialogs/tab_modal_dialog_manager.h" // nogncheck #include "components/javascript_dialogs/tab_modal_dialog_manager.h" // nogncheck
...@@ -880,6 +881,23 @@ content::ColorChooser* TabImpl::OpenColorChooser( ...@@ -880,6 +881,23 @@ content::ColorChooser* TabImpl::OpenColorChooser(
#endif #endif
} }
void TabImpl::CreateSmsPrompt(content::RenderFrameHost* render_frame_host,
const url::Origin& origin,
const std::string& one_time_code,
base::OnceClosure on_confirm,
base::OnceClosure on_cancel) {
#if defined(OS_ANDROID)
auto* web_contents =
content::WebContents::FromRenderFrameHost(render_frame_host);
sms::SmsInfoBar::Create(
web_contents, InfoBarService::FromWebContents(web_contents),
InfoBarService::GetResourceIdMapper(), origin, one_time_code,
std::move(on_confirm), std::move(on_cancel));
#else
NOTREACHED();
#endif
}
void TabImpl::RunFileChooser( void TabImpl::RunFileChooser(
content::RenderFrameHost* render_frame_host, content::RenderFrameHost* render_frame_host,
scoped_refptr<content::FileSelectListener> listener, scoped_refptr<content::FileSelectListener> listener,
......
...@@ -258,6 +258,11 @@ class TabImpl : public Tab, ...@@ -258,6 +258,11 @@ class TabImpl : public Tab,
void RunFileChooser(content::RenderFrameHost* render_frame_host, void RunFileChooser(content::RenderFrameHost* render_frame_host,
scoped_refptr<content::FileSelectListener> listener, scoped_refptr<content::FileSelectListener> listener,
const blink::mojom::FileChooserParams& params) override; const blink::mojom::FileChooserParams& params) override;
void CreateSmsPrompt(content::RenderFrameHost*,
const url::Origin&,
const std::string& one_time_code,
base::OnceClosure on_confirm,
base::OnceClosure on_cancel) override;
int GetTopControlsHeight() override; int GetTopControlsHeight() override;
int GetTopControlsMinHeight() override; int GetTopControlsMinHeight() override;
int GetBottomControlsHeight() override; int GetBottomControlsHeight() override;
......
...@@ -3,6 +3,7 @@ IDS_ACCESSIBILITY_EVENTS_PERMISSION_FRAGMENT ...@@ -3,6 +3,7 @@ IDS_ACCESSIBILITY_EVENTS_PERMISSION_FRAGMENT
IDS_AR_AND_MEDIA_CAPTURE_VIDEO_INFOBAR_TEXT IDS_AR_AND_MEDIA_CAPTURE_VIDEO_INFOBAR_TEXT
IDS_AR_INFOBAR_TEXT IDS_AR_INFOBAR_TEXT
IDS_AR_PERMISSION_FRAGMENT IDS_AR_PERMISSION_FRAGMENT
IDS_AUTOMATIC_DOWNLOADS_TAB_LABEL
IDS_BEFORERELOAD_APP_MESSAGEBOX_TITLE IDS_BEFORERELOAD_APP_MESSAGEBOX_TITLE
IDS_BEFORERELOAD_MESSAGEBOX_TITLE IDS_BEFORERELOAD_MESSAGEBOX_TITLE
IDS_BEFOREUNLOAD_APP_MESSAGEBOX_TITLE IDS_BEFOREUNLOAD_APP_MESSAGEBOX_TITLE
...@@ -52,18 +53,18 @@ IDS_CERT_ERROR_WEAK_KEY_DESCRIPTION ...@@ -52,18 +53,18 @@ IDS_CERT_ERROR_WEAK_KEY_DESCRIPTION
IDS_CERT_ERROR_WEAK_KEY_DETAILS IDS_CERT_ERROR_WEAK_KEY_DETAILS
IDS_CERT_ERROR_WEAK_SIGNATURE_ALGORITHM_DESCRIPTION IDS_CERT_ERROR_WEAK_SIGNATURE_ALGORITHM_DESCRIPTION
IDS_CERT_ERROR_WEAK_SIGNATURE_ALGORITHM_DETAILS IDS_CERT_ERROR_WEAK_SIGNATURE_ALGORITHM_DETAILS
IDS_CERT_INFO_SUBJECT_GROUP
IDS_CERT_INFO_COMMON_NAME_LABEL IDS_CERT_INFO_COMMON_NAME_LABEL
IDS_CERT_INFO_ORGANIZATION_LABEL
IDS_CERT_INFO_SERIAL_NUMBER_LABEL
IDS_CERT_INFO_ORGANIZATIONAL_UNIT_LABEL
IDS_CERT_INFO_ISSUER_GROUP
IDS_CERT_INFO_VALIDITY_GROUP
IDS_CERT_INFO_ISSUED_ON_LABEL
IDS_CERT_INFO_EXPIRES_ON_LABEL IDS_CERT_INFO_EXPIRES_ON_LABEL
IDS_CERT_INFO_FINGERPRINTS_GROUP IDS_CERT_INFO_FINGERPRINTS_GROUP
IDS_CERT_INFO_SHA256_FINGERPRINT_LABEL IDS_CERT_INFO_ISSUED_ON_LABEL
IDS_CERT_INFO_ISSUER_GROUP
IDS_CERT_INFO_ORGANIZATIONAL_UNIT_LABEL
IDS_CERT_INFO_ORGANIZATION_LABEL
IDS_CERT_INFO_SERIAL_NUMBER_LABEL
IDS_CERT_INFO_SHA1_FINGERPRINT_LABEL IDS_CERT_INFO_SHA1_FINGERPRINT_LABEL
IDS_CERT_INFO_SHA256_FINGERPRINT_LABEL
IDS_CERT_INFO_SUBJECT_GROUP
IDS_CERT_INFO_VALIDITY_GROUP
IDS_CERT_X509_SUBJECT_ALT_NAME IDS_CERT_X509_SUBJECT_ALT_NAME
IDS_CLIPBOARD_INFOBAR_TEXT IDS_CLIPBOARD_INFOBAR_TEXT
IDS_CLIPBOARD_PERMISSION_FRAGMENT IDS_CLIPBOARD_PERMISSION_FRAGMENT
...@@ -81,10 +82,10 @@ IDS_DOWNLOAD_NOTIFICATION_PAUSED ...@@ -81,10 +82,10 @@ IDS_DOWNLOAD_NOTIFICATION_PAUSED
IDS_DOWNLOAD_NOTIFICATION_PAUSE_BUTTON IDS_DOWNLOAD_NOTIFICATION_PAUSE_BUTTON
IDS_DOWNLOAD_NOTIFICATION_RESUME_BUTTON IDS_DOWNLOAD_NOTIFICATION_RESUME_BUTTON
IDS_DOWNLOAD_UI_DETERMINATE_BYTES IDS_DOWNLOAD_UI_DETERMINATE_BYTES
IDS_DOWNLOAD_UI_GB
IDS_DOWNLOAD_UI_INDETERMINATE_BYTES IDS_DOWNLOAD_UI_INDETERMINATE_BYTES
IDS_DOWNLOAD_UI_KB IDS_DOWNLOAD_UI_KB
IDS_DOWNLOAD_UI_MB IDS_DOWNLOAD_UI_MB
IDS_DOWNLOAD_UI_GB
IDS_FLASH_PERMISSION_FRAGMENT IDS_FLASH_PERMISSION_FRAGMENT
IDS_FLASH_PERMISSION_WARNING_FRAGMENT IDS_FLASH_PERMISSION_WARNING_FRAGMENT
IDS_GEOLOCATION_INFOBAR_PERMISSION_FRAGMENT IDS_GEOLOCATION_INFOBAR_PERMISSION_FRAGMENT
...@@ -97,10 +98,10 @@ IDS_JAVASCRIPT_MESSAGEBOX_TITLE ...@@ -97,10 +98,10 @@ IDS_JAVASCRIPT_MESSAGEBOX_TITLE
IDS_JAVASCRIPT_MESSAGEBOX_TITLE_IFRAME IDS_JAVASCRIPT_MESSAGEBOX_TITLE_IFRAME
IDS_JAVASCRIPT_MESSAGEBOX_TITLE_NONSTANDARD_URL IDS_JAVASCRIPT_MESSAGEBOX_TITLE_NONSTANDARD_URL
IDS_JAVASCRIPT_MESSAGEBOX_TITLE_NONSTANDARD_URL_IFRAME IDS_JAVASCRIPT_MESSAGEBOX_TITLE_NONSTANDARD_URL_IFRAME
IDS_LOGIN_DIALOG_USERNAME_FIELD IDS_LOGIN_DIALOG_OK_BUTTON_LABEL
IDS_LOGIN_DIALOG_PASSWORD_FIELD IDS_LOGIN_DIALOG_PASSWORD_FIELD
IDS_LOGIN_DIALOG_TITLE IDS_LOGIN_DIALOG_TITLE
IDS_LOGIN_DIALOG_OK_BUTTON_LABEL IDS_LOGIN_DIALOG_USERNAME_FIELD
IDS_MEDIA_CAPTURE_AUDIO_AND_VIDEO_INFOBAR_TEXT IDS_MEDIA_CAPTURE_AUDIO_AND_VIDEO_INFOBAR_TEXT
IDS_MEDIA_CAPTURE_AUDIO_ONLY_INFOBAR_TEXT IDS_MEDIA_CAPTURE_AUDIO_ONLY_INFOBAR_TEXT
IDS_MEDIA_CAPTURE_AUDIO_ONLY_PERMISSION_FRAGMENT IDS_MEDIA_CAPTURE_AUDIO_ONLY_PERMISSION_FRAGMENT
...@@ -182,12 +183,10 @@ IDS_PAGE_INFO_TYPE_BLUETOOTH_SCANNING ...@@ -182,12 +183,10 @@ IDS_PAGE_INFO_TYPE_BLUETOOTH_SCANNING
IDS_PAGE_INFO_TYPE_CAMERA IDS_PAGE_INFO_TYPE_CAMERA
IDS_PAGE_INFO_TYPE_CAMERA_PAN_TILT_ZOOM IDS_PAGE_INFO_TYPE_CAMERA_PAN_TILT_ZOOM
IDS_PAGE_INFO_TYPE_CLIPBOARD IDS_PAGE_INFO_TYPE_CLIPBOARD
IDS_AUTOMATIC_DOWNLOADS_TAB_LABEL
IDS_PAGE_INFO_TYPE_FLASH IDS_PAGE_INFO_TYPE_FLASH
IDS_PAGE_INFO_TYPE_IMAGES IDS_PAGE_INFO_TYPE_IMAGES
IDS_PAGE_INFO_TYPE_JAVASCRIPT IDS_PAGE_INFO_TYPE_JAVASCRIPT
IDS_PAGE_INFO_TYPE_LOCATION IDS_PAGE_INFO_TYPE_LOCATION
IDS_PAGE_INFO_TYPE_PROTECTED_MEDIA_IDENTIFIER
IDS_PAGE_INFO_TYPE_MIC IDS_PAGE_INFO_TYPE_MIC
IDS_PAGE_INFO_TYPE_MIDI_SYSEX IDS_PAGE_INFO_TYPE_MIDI_SYSEX
IDS_PAGE_INFO_TYPE_MOTION_SENSORS IDS_PAGE_INFO_TYPE_MOTION_SENSORS
...@@ -196,6 +195,7 @@ IDS_PAGE_INFO_TYPE_NFC ...@@ -196,6 +195,7 @@ IDS_PAGE_INFO_TYPE_NFC
IDS_PAGE_INFO_TYPE_NOTIFICATIONS IDS_PAGE_INFO_TYPE_NOTIFICATIONS
IDS_PAGE_INFO_TYPE_POPUPS_REDIRECTS IDS_PAGE_INFO_TYPE_POPUPS_REDIRECTS
IDS_PAGE_INFO_TYPE_PROTECTED_MEDIA_IDENTIFIER IDS_PAGE_INFO_TYPE_PROTECTED_MEDIA_IDENTIFIER
IDS_PAGE_INFO_TYPE_PROTECTED_MEDIA_IDENTIFIER
IDS_PAGE_INFO_TYPE_SENSORS IDS_PAGE_INFO_TYPE_SENSORS
IDS_PAGE_INFO_TYPE_SERIAL IDS_PAGE_INFO_TYPE_SERIAL
IDS_PAGE_INFO_TYPE_SOUND IDS_PAGE_INFO_TYPE_SOUND
...@@ -216,6 +216,9 @@ IDS_PROTECTED_MEDIA_IDENTIFIER_PER_ORIGIN_PROVISIONING_INFOBAR_TEXT ...@@ -216,6 +216,9 @@ IDS_PROTECTED_MEDIA_IDENTIFIER_PER_ORIGIN_PROVISIONING_INFOBAR_TEXT
IDS_REQUEST_LARGE_QUOTA_INFOBAR_TEXT IDS_REQUEST_LARGE_QUOTA_INFOBAR_TEXT
IDS_REQUEST_QUOTA_INFOBAR_TEXT IDS_REQUEST_QUOTA_INFOBAR_TEXT
IDS_REQUEST_QUOTA_PERMISSION_FRAGMENT IDS_REQUEST_QUOTA_PERMISSION_FRAGMENT
IDS_SMS_INFOBAR_BUTTON_OK
IDS_SMS_INFOBAR_STATUS_SMS_RECEIVED
IDS_SMS_INFOBAR_TITLE
IDS_SSL_CLOSE_DETAILS_BUTTON IDS_SSL_CLOSE_DETAILS_BUTTON
IDS_SSL_NONOVERRIDABLE_HSTS IDS_SSL_NONOVERRIDABLE_HSTS
IDS_SSL_NONOVERRIDABLE_INVALID IDS_SSL_NONOVERRIDABLE_INVALID
...@@ -232,12 +235,12 @@ IDS_SSL_V2_RECURRENT_ERROR_PARAGRAPH ...@@ -232,12 +235,12 @@ IDS_SSL_V2_RECURRENT_ERROR_PARAGRAPH
IDS_SSL_V2_TITLE IDS_SSL_V2_TITLE
IDS_STORAGE_ACCESS_INFOBAR_TEXT IDS_STORAGE_ACCESS_INFOBAR_TEXT
IDS_STORAGE_ACCESS_PERMISSION_FRAGMENT IDS_STORAGE_ACCESS_PERMISSION_FRAGMENT
IDS_TRANSLATE_INFOBAR_ERROR
IDS_TRANSLATE_BUTTON IDS_TRANSLATE_BUTTON
IDS_TRANSLATE_INFOBAR_ERROR
IDS_TRANSLATE_NEVER_TRANSLATE_SITE IDS_TRANSLATE_NEVER_TRANSLATE_SITE
IDS_TRANSLATE_OPTION_ALWAYS_TRANSLATE IDS_TRANSLATE_OPTION_ALWAYS_TRANSLATE
IDS_TRANSLATE_OPTION_NEVER_TRANSLATE
IDS_TRANSLATE_OPTION_MORE_LANGUAGE IDS_TRANSLATE_OPTION_MORE_LANGUAGE
IDS_TRANSLATE_OPTION_NEVER_TRANSLATE
IDS_TRANSLATE_OPTION_NOT_SOURCE_LANGUAGE IDS_TRANSLATE_OPTION_NOT_SOURCE_LANGUAGE
IDS_VR_INFOBAR_TEXT IDS_VR_INFOBAR_TEXT
IDS_VR_PERMISSION_FRAGMENT IDS_VR_PERMISSION_FRAGMENT
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