Commit 02f36d7c authored by Rayan Kanso's avatar Rayan Kanso Committed by Commit Bot

[Contacts] Enable Origin Trial for icons/addresses.

Bug: 1024911
Change-Id: I37b5e4606f982f15a2e30c397de7183027940bea
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1928772Reviewed-by: default avatarKoji Ishii <kojii@chromium.org>
Reviewed-by: default avatarPeter Beverloo <peter@chromium.org>
Commit-Queue: Rayan Kanso <rayankans@chromium.org>
Cr-Commit-Position: refs/heads/master@{#720467}
parent cd83dc1b
...@@ -99,14 +99,7 @@ constexpr char kIcon[] = "icon"; ...@@ -99,14 +99,7 @@ constexpr char kIcon[] = "icon";
} // namespace } // namespace
ContactsManager::ContactsManager() { ContactsManager::ContactsManager() = default;
properties_ = {kEmail, kName, kTel};
if (RuntimeEnabledFeatures::ContactsManagerExtraPropertiesEnabled()) {
properties_.push_back(kAddress);
properties_.push_back(kIcon);
}
}
ContactsManager::~ContactsManager() = default; ContactsManager::~ContactsManager() = default;
...@@ -120,6 +113,20 @@ ContactsManager::GetContactsManager(ScriptState* script_state) { ...@@ -120,6 +113,20 @@ ContactsManager::GetContactsManager(ScriptState* script_state) {
return contacts_manager_; return contacts_manager_;
} }
const Vector<String>& ContactsManager::GetProperties(
ScriptState* script_state) {
if (properties_.IsEmpty()) {
properties_ = {kEmail, kName, kTel};
if (RuntimeEnabledFeatures::ContactsManagerExtraPropertiesEnabled(
ExecutionContext::From(script_state))) {
properties_.push_back(kAddress);
properties_.push_back(kIcon);
}
}
return properties_;
}
ScriptPromise ContactsManager::select(ScriptState* script_state, ScriptPromise ContactsManager::select(ScriptState* script_state,
const Vector<String>& properties, const Vector<String>& properties,
ContactsSelectOptions* options) { ContactsSelectOptions* options) {
...@@ -162,7 +169,7 @@ ScriptPromise ContactsManager::select(ScriptState* script_state, ...@@ -162,7 +169,7 @@ ScriptPromise ContactsManager::select(ScriptState* script_state,
bool include_icons = false; bool include_icons = false;
for (const String& property : properties) { for (const String& property : properties) {
if (!base::Contains(properties_, property)) { if (!base::Contains(GetProperties(script_state), property)) {
return ScriptPromise::Reject( return ScriptPromise::Reject(
script_state, script_state,
V8ThrowException::CreateTypeError( V8ThrowException::CreateTypeError(
...@@ -225,7 +232,8 @@ void ContactsManager::OnContactsSelected( ...@@ -225,7 +232,8 @@ void ContactsManager::OnContactsSelected(
} }
ScriptPromise ContactsManager::getProperties(ScriptState* script_state) { ScriptPromise ContactsManager::getProperties(ScriptState* script_state) {
return ScriptPromise::Cast(script_state, ToV8(properties_, script_state)); return ScriptPromise::Cast(script_state,
ToV8(GetProperties(script_state), script_state));
} }
} // namespace blink } // namespace blink
...@@ -40,6 +40,8 @@ class ContactsManager final : public ScriptWrappable { ...@@ -40,6 +40,8 @@ class ContactsManager final : public ScriptWrappable {
ScriptPromiseResolver* resolver, ScriptPromiseResolver* resolver,
base::Optional<Vector<mojom::blink::ContactInfoPtr>> contacts); base::Optional<Vector<mojom::blink::ContactInfoPtr>> contacts);
const Vector<String>& GetProperties(ScriptState* script_state);
// Created lazily. // Created lazily.
mojo::Remote<mojom::blink::ContactsManager> contacts_manager_; mojo::Remote<mojom::blink::ContactsManager> contacts_manager_;
bool contact_picker_in_use_ = false; bool contact_picker_in_use_ = false;
......
...@@ -338,6 +338,8 @@ ...@@ -338,6 +338,8 @@
}, },
{ {
name: "ContactsManagerExtraProperties", name: "ContactsManagerExtraProperties",
origin_trial_feature_name: "ContactsManagerExtraProperties",
origin_trial_os: ["android"],
status: {"Android": "experimental", "default": "test"}, status: {"Android": "experimental", "default": "test"},
}, },
{ {
......
...@@ -2101,3 +2101,8 @@ crbug.com/626703 [ Win ] external/wpt/payment-method-basic-card/billing-address- ...@@ -2101,3 +2101,8 @@ crbug.com/626703 [ Win ] external/wpt/payment-method-basic-card/billing-address-
[ Win ] virtual/origin-trials-runtimeflags-disabled/http/tests/origin_trials/webexposed/sms-receiver-origin-trial-interfaces.html [ Skip ] [ Win ] virtual/origin-trials-runtimeflags-disabled/http/tests/origin_trials/webexposed/sms-receiver-origin-trial-interfaces.html [ Skip ]
[ Linux ] virtual/origin-trials-runtimeflags-disabled/http/tests/origin_trials/webexposed/sms-receiver-origin-trial-interfaces.html [ Skip ] [ Linux ] virtual/origin-trials-runtimeflags-disabled/http/tests/origin_trials/webexposed/sms-receiver-origin-trial-interfaces.html [ Skip ]
[ Mac ] virtual/origin-trials-runtimeflags-disabled/http/tests/origin_trials/webexposed/sms-receiver-origin-trial-interfaces.html [ Skip ] [ Mac ] virtual/origin-trials-runtimeflags-disabled/http/tests/origin_trials/webexposed/sms-receiver-origin-trial-interfaces.html [ Skip ]
# Chrome Win/Linux/Mac don't support Contacts Picker API yet.
[ Win ] virtual/origin-trials-runtimeflags-disabled/http/tests/origin_trials/webexposed/contacts-manager-extra-properties-trial-interfaces.html [ Skip ]
[ Linux ] virtual/origin-trials-runtimeflags-disabled/http/tests/origin_trials/webexposed/contacts-manager-extra-properties-trial-interfaces.html [ Skip ]
[ Mac ] virtual/origin-trials-runtimeflags-disabled/http/tests/origin_trials/webexposed/contacts-manager-extra-properties-trial-interfaces.html [ Skip ]
<!DOCTYPE html>
<meta charset="utf-8">
<!-- Generate token with the command:
generate_token.py http://127.0.0.1:8000 ContactsManagerExtraProperties --expire-timestamp=2000000000
-->
<meta http-equiv="origin-trial" content="Ag08kQBxaZIHRn4szFwJFlEfUhOPCV2CZtU7mqRMQqxt3kGuuPu9Qom6hRdF+vAQIBcHOrDw0d4ajhMzeUETXQ0AAABmeyJvcmlnaW4iOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiwgImZlYXR1cmUiOiAiQ29udGFjdHNNYW5hZ2VyRXh0cmFQcm9wZXJ0aWVzIiwgImV4cGlyeSI6IDIwMDAwMDAwMDB9" />
<title>Contacts Manager Extra Properties - exposed by origin trial</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/origin-trials-helper.js"></script>
<script>
test(() => {
OriginTrialsHelper.check_properties_exist(this, { 'ContactsManager': ['select', 'getProperties'] });
}, 'Contact API interfaces and properties in Origin-Trial enabled document.');
promise_test(async () => {
const properties = await navigator.contacts.getProperties();
assert_true(properties.includes('address'));
assert_true(properties.includes('icon'));
}, '`address` and `icon` properties are exposed.');
</script>
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