Commit fdbfee1b authored by Javier Ernesto Flores Robles's avatar Javier Ernesto Flores Robles Committed by Commit Bot

[iOS] Create Credential Provider skeleton

- Add Autofill Credential Provider target behind gn flag.
- Add empty main interface.
- Add empty Credential Provider View Controller.
- Add setup for i18n.

Bug: 1044907
Change-Id: Ie6955ca9db897915d5a196c74b0dd507c51bdccc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2016626Reviewed-by: default avatarSamuel Huang <huangs@chromium.org>
Reviewed-by: default avatarSylvain Defresne <sdefresne@chromium.org>
Reviewed-by: default avatarOlivier Robin <olivierrobin@chromium.org>
Commit-Queue: Javier Ernesto Flores Robles <javierrobles@chromium.org>
Cr-Commit-Position: refs/heads/master@{#738986}
parent 21823ea8
...@@ -14,6 +14,9 @@ declare_args() { ...@@ -14,6 +14,9 @@ declare_args() {
# Enable share extension. # Enable share extension.
ios_enable_share_extension = true ios_enable_share_extension = true
# Enable credential provider extension.
ios_enable_credential_provider_extension = false
# Enable multi-window configuration in Info.plist # Enable multi-window configuration in Info.plist
ios_enable_multi_window = false ios_enable_multi_window = false
......
...@@ -356,6 +356,9 @@ ios_app_bundle("chrome") { ...@@ -356,6 +356,9 @@ ios_app_bundle("chrome") {
if (ios_enable_share_extension) { if (ios_enable_share_extension) {
deps += [ ":share_extension_bundle" ] deps += [ ":share_extension_bundle" ]
} }
if (ios_enable_credential_provider_extension) {
deps += [ ":credential_provider_extension_bundle" ]
}
} }
extra_substitutions = [ extra_substitutions = [
...@@ -416,4 +419,12 @@ if (current_toolchain == default_toolchain) { ...@@ -416,4 +419,12 @@ if (current_toolchain == default_toolchain) {
outputs = [ "{{bundle_contents_dir}}/PlugIns/{{source_file_part}}" ] outputs = [ "{{bundle_contents_dir}}/PlugIns/{{source_file_part}}" ]
} }
} }
if (ios_enable_credential_provider_extension) {
bundle_data("credential_provider_extension_bundle") {
public_deps = [ "//ios/chrome/credential_provider_extension" ]
sources = [ "$root_out_dir/credential_provider_extension.appex" ]
outputs = [ "{{bundle_contents_dir}}/PlugIns/{{source_file_part}}" ]
}
}
} }
# 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/ios/rules.gni")
import("//build/config/locales.gni")
import("//build/config/mac/base_rules.gni")
import("//build/mac/tweak_info_plist.gni")
import("//ios/build/chrome_build.gni")
import("//ios/build/config.gni")
import("//ios/chrome/extension_repack.gni")
import("//ios/chrome/tools/strings/generate_localizable_strings.gni")
import("//ios/public/provider/chrome/browser/build_config.gni")
group("resources") {
deps = [ "//ios/chrome/credential_provider_extension/strings" ]
}
extension_repack_all_locales("packed_resources") {
extension = "credential_provider_extension"
input_locales = ios_packed_locales
output_locales = ios_packed_locales_as_mac_outputs
}
tweak_info_plist("tweak_info_plist") {
info_plist = "Info.plist"
}
compile_entitlements("entitlements") {
substitutions = [ "IOS_BUNDLE_ID_PREFIX=$ios_app_bundle_id_prefix" ]
output_name =
"$target_gen_dir/credential_provider_extension.appex.entitlements"
entitlements_templates = [
"entitlements/external/credential_provider_extension.appex.entitlements",
]
}
ios_appex_bundle("credential_provider_extension") {
sources = [
"credential_provider_view_controller.h",
"credential_provider_view_controller.mm",
]
configs += [ "//build/config/compiler:enable_arc" ]
deps = [
":system_strings",
"//base",
"//ios/chrome/common/colors",
"//ios/chrome/credential_provider_extension/resources",
]
bundle_deps_filter = [ "//third_party/icu:icudata" ]
assert_no_deps = ios_extension_assert_no_deps
libs = [
"AuthenticationServices.framework",
"Foundation.framework",
"UIKit.framework",
]
extra_substitutions = [
"CHROMIUM_SHORT_NAME=$chromium_short_name",
"CREDENTIAL_PROVIDER_EXTENSION_BUNDLE_ID=$chromium_bundle_id.CredentialProvider",
]
entitlements_target = ":entitlements"
info_plist_target = ":tweak_info_plist"
}
generate_localizable_strings("system_strings") {
visibility = [ ":*" ]
_packed_resources_target = ":packed_resources"
config_file = "credential_provider_extension_localize_strings_config.plist"
datapack_dir = get_label_info(_packed_resources_target, "target_gen_dir")
packed_locales = ios_packed_locales_as_mac_outputs
output_filenames = [ "Localizable.strings" ]
deps = [ _packed_resources_target ]
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>${CHROMIUM_SHORT_NAME}</string>
<key>CFBundleExecutable</key>
<string>credential_provider_extension</string>
<key>CFBundleIdentifier</key>
<string>${IOS_BUNDLE_ID_PREFIX}.${CREDENTIAL_PROVIDER_EXTENSION_BUNDLE_ID}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>credential_provider_extension</string>
<key>CFBundlePackageType</key>
<string>XPC!</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>ASCredentialProviderExtensionShowsConfigurationUI</key>
<true/>
</dict>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.authentication-services-credential-provider-ui</string>
</dict>
</dict>
</plist>
javierrobles@chromium.org
djean@chromium.org
# TEAM: ios-directory-owners@chromium.org
# OS: iOS
# COMPONENT: UI>Browser>Mobile->Passwords
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>headers</key>
<array>
<string>ios/credential_provider_extension/grit/ios_credential_provider_extension_strings.h</string>
</array>
<key>outputs</key>
<array>
<dict>
<key>name</key>
<string>Localizable.strings</string>
<key>strings</key>
<array>
<string>IDS_IOS_CREDENTIAL_PROVIDER_EXTENSION_CANCEL</string>
</array>
</dict>
</array>
</dict>
</plist>
// 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.
#ifndef IOS_CHROME_CREDENTIAL_PROVIDER_EXTENSION_CREDENTIAL_PROVIDER_VIEW_CONTROLLER_H_
#define IOS_CHROME_CREDENTIAL_PROVIDER_EXTENSION_CREDENTIAL_PROVIDER_VIEW_CONTROLLER_H_
#import <AuthenticationServices/AuthenticationServices.h>
// This is the main entry point for the extension. The system interacts with it
// via the methods defined in ASCredentialProviderViewController.
@interface CredentialProviderViewController : ASCredentialProviderViewController
@end
#endif // IOS_CHROME_CREDENTIAL_PROVIDER_EXTENSION_CREDENTIAL_PROVIDER_VIEW_CONTROLLER_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.
#import "ios/chrome/credential_provider_extension/credential_provider_view_controller.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
@implementation CredentialProviderViewController
@end
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.authentication-services.autofill-credential-provider</key>
<true/>
<key>application-identifier</key>
<string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
<key>com.apple.security.application-groups</key>
<array>
<string>group.${IOS_BUNDLE_ID_PREFIX}.chrome</string>
<string>group.${IOS_BUNDLE_ID_PREFIX}.common</string>
</array>
</dict>
</plist>
# 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/ios/rules.gni")
import("//ios/public/provider/chrome/browser/build_config.gni")
group("resources") {
public_deps = [ ":main_interface" ]
}
bundle_data_ib_file("main_interface") {
source = "MainInterface.storyboard"
}
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15702" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="Xki-Si-B7m">
<device id="retina4_7" orientation="portrait" appearance="light"/>
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15704"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--Credential Provider View Controller-->
<scene sceneID="Uma-9u-xWV">
<objects>
<viewController id="Xki-Si-B7m" customClass="CredentialProviderViewController" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="BuU-Ak-iZz">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<viewLayoutGuide key="safeArea" id="Ky8-vK-JVj"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="RwB-HB-TSk" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="140" y="133"/>
</scene>
</scenes>
</document>
# 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/locales.gni")
import("//tools/grit/grit_rule.gni")
grit("strings") {
source = "ios_credential_provider_extension_strings.grd"
output_dir = "$root_gen_dir/ios/credential_provider_extension"
outputs = [ "grit/ios_credential_provider_extension_strings.h" ]
foreach(locale, locales_with_fake_bidi) {
outputs += [ "ios_credential_provider_extension_strings_$locale.pak" ]
}
}
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="af"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="am"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="ar"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="as"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="az"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="be"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="bg"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="bn"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="bs"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="ca"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="cs"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="da"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="de"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="el"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="en-GB"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="en"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="es-419"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="es"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="et"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="eu"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="fa"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="fake-bidi"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="fi"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="fil"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="fr-CA"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="fr"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="gl"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="gu"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="hi"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="hr"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="hu"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="hy"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="id"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="is"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="it"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="iw"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="ja"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="ka"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="kk"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="km"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="kn"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="ko"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="ky"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="lo"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="lt"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="lv"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="mk"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="ml"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="mn"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="mr"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="ms"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="my"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="ne"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="nl"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="no"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="or"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="pa"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="pl"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="pt-BR"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="pt-PT"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="ro"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="ru"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="si"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="sk"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="sl"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="sq"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="sr"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="sv"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="sw"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="ta"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="te"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="th"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="tr"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="uk"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="ur"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="uz"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="vi"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="zh-CN"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="zh-HK"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="zh-TW"></translationbundle>
<?xml version="1.0" ?><!DOCTYPE translationbundle><translationbundle lang="zu"></translationbundle>
...@@ -398,6 +398,10 @@ ...@@ -398,6 +398,10 @@
"ios/chrome/content_widget_extension/strings/ios_content_widget_extension_google_chrome_strings.grd": { "ios/chrome/content_widget_extension/strings/ios_content_widget_extension_google_chrome_strings.grd": {
"messages": [780], "messages": [780],
}, },
"ios/chrome/credential_provider_extension/strings/ios_credential_provider_extension_strings.grd": {
"META": {"join": 2},
"messages": [800],
},
# END ios/ section. # END ios/ section.
...@@ -406,7 +410,7 @@ ...@@ -406,7 +410,7 @@
# App only use one file depending on whether it is iOS or other platform. # App only use one file depending on whether it is iOS or other platform.
"content/app/resources/content_resources.grd": { "content/app/resources/content_resources.grd": {
# Big alignment at start of section. # Big alignment at start of section.
"META": {"join": 3, "align": 100}, "META": {"join": 2, "align": 100},
"structures": [2900], "structures": [2900],
}, },
"content/content_resources.grd": { "content/content_resources.grd": {
......
...@@ -58,6 +58,7 @@ ...@@ -58,6 +58,7 @@
"ios/chrome/app/strings/ios_chromium_strings.grd", "ios/chrome/app/strings/ios_chromium_strings.grd",
"ios/chrome/app/strings/ios_google_chrome_strings.grd", "ios/chrome/app/strings/ios_google_chrome_strings.grd",
"ios/chrome/app/strings/ios_strings.grd", "ios/chrome/app/strings/ios_strings.grd",
"ios/chrome/credential_provider_extension/strings/ios_credential_provider_extension_strings.grd",
"ios/chrome/content_widget_extension/strings/ios_content_widget_extension_chromium_strings.grd", "ios/chrome/content_widget_extension/strings/ios_content_widget_extension_chromium_strings.grd",
"ios/chrome/content_widget_extension/strings/ios_content_widget_extension_google_chrome_strings.grd", "ios/chrome/content_widget_extension/strings/ios_content_widget_extension_google_chrome_strings.grd",
"ios/chrome/search_widget_extension/strings/ios_search_widget_extension_strings.grd", "ios/chrome/search_widget_extension/strings/ios_search_widget_extension_strings.grd",
......
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