Commit 54bcd34d authored by Rayan Kanso's avatar Rayan Kanso Committed by Commit Bot

Change RelatedApplication from an interface to a dictionary.

TBR=mkwst@chromium.org

Bug: 687444
Change-Id: Iaae3fe5443c12982fa10d22c85a0894630a8354d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1831774
Commit-Queue: Rayan Kanso <rayankans@chromium.org>
Reviewed-by: default avatarMatt Giuca <mgiuca@chromium.org>
Cr-Commit-Position: refs/heads/master@{#704592}
parent 866265f0
...@@ -10,6 +10,5 @@ blink_modules_sources("installedapp") { ...@@ -10,6 +10,5 @@ blink_modules_sources("installedapp") {
"installed_app_controller.h", "installed_app_controller.h",
"navigator_installed_app.cc", "navigator_installed_app.cc",
"navigator_installed_app.h", "navigator_installed_app.h",
"related_application.h",
] ]
} }
...@@ -96,8 +96,10 @@ void InstalledAppController::OnFilterInstalledApps( ...@@ -96,8 +96,10 @@ void InstalledAppController::OnFilterInstalledApps(
Vector<mojom::blink::RelatedApplicationPtr> result) { Vector<mojom::blink::RelatedApplicationPtr> result) {
HeapVector<Member<RelatedApplication>> applications; HeapVector<Member<RelatedApplication>> applications;
for (const auto& res : result) { for (const auto& res : result) {
auto* app = MakeGarbageCollected<RelatedApplication>(res->platform, auto* app = MakeGarbageCollected<RelatedApplication>();
res->url, res->id); app->setPlatform(res->platform);
app->setURL(res->url);
app->setId(res->id);
applications.push_back(app); applications.push_back(app);
} }
callbacks->OnSuccess(applications); callbacks->OnSuccess(applications);
......
// 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 THIRD_PARTY_BLINK_RENDERER_MODULES_INSTALLEDAPP_RELATED_APPLICATION_H_
#define THIRD_PARTY_BLINK_RENDERER_MODULES_INSTALLEDAPP_RELATED_APPLICATION_H_
#include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
#include "third_party/blink/renderer/platform/heap/garbage_collected.h"
#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
namespace blink {
class RelatedApplication final : public ScriptWrappable {
DEFINE_WRAPPERTYPEINFO();
public:
RelatedApplication(const String& platform,
const String& url,
const String& id)
: platform_(platform), url_(url), id_(id) {}
~RelatedApplication() override = default;
String platform() const { return platform_; }
String url() const { return url_; }
String id() const { return id_; }
private:
const String platform_;
const String url_;
const String id_;
};
} // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_INSTALLEDAPP_RELATED_APPLICATION_H_
...@@ -5,14 +5,8 @@ ...@@ -5,14 +5,8 @@
// TODO(mgiuca): Link to full spec, rather than explainer, upon completion. // TODO(mgiuca): Link to full spec, rather than explainer, upon completion.
// https://github.com/WICG/get-installed-related-apps/blob/master/EXPLAINER.md // https://github.com/WICG/get-installed-related-apps/blob/master/EXPLAINER.md
// TODO(mgiuca): This should be a dictionary, not an interface. dictionary RelatedApplication {
// (NoInterfaceObject is basically a makeshift dictionary.) required USVString platform;
// https://crbug.com/687444. USVString url;
[ DOMString id;
NoInterfaceObject,
RuntimeEnabled=InstalledApp
] interface RelatedApplication {
readonly attribute DOMString platform;
readonly attribute DOMString url;
readonly attribute DOMString id;
}; };
...@@ -195,7 +195,6 @@ modules_idl_files = ...@@ -195,7 +195,6 @@ modules_idl_files =
"indexeddb/idb_request.idl", "indexeddb/idb_request.idl",
"indexeddb/idb_transaction.idl", "indexeddb/idb_transaction.idl",
"indexeddb/idb_version_change_event.idl", "indexeddb/idb_version_change_event.idl",
"installedapp/related_application.idl",
"keyboard/keyboard.idl", "keyboard/keyboard.idl",
"keyboard/keyboard_layout_map.idl", "keyboard/keyboard_layout_map.idl",
"locks/lock.idl", "locks/lock.idl",
...@@ -650,6 +649,7 @@ modules_dictionary_idl_files = ...@@ -650,6 +649,7 @@ modules_dictionary_idl_files =
"indexeddb/idb_observer_init.idl", "indexeddb/idb_observer_init.idl",
"indexeddb/idb_transaction_options.idl", "indexeddb/idb_transaction_options.idl",
"indexeddb/idb_version_change_event_init.idl", "indexeddb/idb_version_change_event_init.idl",
"installedapp/related_application.idl",
"locks/lock_info.idl", "locks/lock_info.idl",
"locks/lock_manager_snapshot.idl", "locks/lock_manager_snapshot.idl",
"locks/lock_options.idl", "locks/lock_options.idl",
......
...@@ -29,10 +29,10 @@ installedapp_test((t, mock) => { ...@@ -29,10 +29,10 @@ installedapp_test((t, mock) => {
[{platform: 'play', url: null, id: 'com.test'}, [{platform: 'play', url: null, id: 'com.test'},
{platform: 'itunes', url: 'https://itunes.apple.com/', id: null}], {platform: 'itunes', url: 'https://itunes.apple.com/', id: null}],
[{platform: 'play', url: null, id: 'com.test'}]); [{platform: 'play', url: null, id: 'com.test'}]);
// TODO(mgiuca): The |url| field should be omitted from the result, not ''.
return navigator.getInstalledRelatedApps().then(result => { return navigator.getInstalledRelatedApps().then(result => {
assert_array_relatedapplication_equals( assert_array_relatedapplication_equals(
result, [{platform: 'play', url: '', id: 'com.test'}]); result, [{platform: 'play', id: 'com.test'}]);
}); });
}, 'getInstalledRelatedApps with related and installed apps (no url)'); }, 'getInstalledRelatedApps with related and installed apps (no url)');
...@@ -46,12 +46,12 @@ installedapp_test((t, mock) => { ...@@ -46,12 +46,12 @@ installedapp_test((t, mock) => {
{platform: 'itunes', url: 'https://itunes.apple.com/', id: null}], {platform: 'itunes', url: 'https://itunes.apple.com/', id: null}],
[{platform: 'play', url: null, id: 'com.test'}, [{platform: 'play', url: null, id: 'com.test'},
{platform: 'itunes', url: 'https://itunes.apple.com/', id: null}]); {platform: 'itunes', url: 'https://itunes.apple.com/', id: null}]);
// TODO(mgiuca): The null fields should be omitted from the result, not ''.
return navigator.getInstalledRelatedApps().then(result => { return navigator.getInstalledRelatedApps().then(result => {
assert_array_relatedapplication_equals( assert_array_relatedapplication_equals(
result, result,
[{platform: 'play', url: '', id: 'com.test'}, [{platform: 'play', id: 'com.test'},
{platform: 'itunes', url: 'https://itunes.apple.com/', id: ''}]); {platform: 'itunes', url: 'https://itunes.apple.com/'}]);
}); });
}, 'getInstalledRelatedApps with multiple related and installed apps'); }, 'getInstalledRelatedApps with multiple related and installed apps');
......
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