Commit ca510901 authored by Nate Chapin's avatar Nate Chapin Committed by Commit Bot

Merge NavigatorContacts and ContactsManager

Change-Id: I37961a93296714a9f378b6b963105673deb97dfc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2528166
Auto-Submit: Nate Chapin <japhet@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Commit-Queue: Nate Chapin <japhet@chromium.org>
Cr-Commit-Position: refs/heads/master@{#826517}
parent 631b1652
...@@ -10,8 +10,6 @@ blink_modules_sources("contacts_picker") { ...@@ -10,8 +10,6 @@ blink_modules_sources("contacts_picker") {
"contact_address.h", "contact_address.h",
"contacts_manager.cc", "contacts_manager.cc",
"contacts_manager.h", "contacts_manager.h",
"navigator_contacts.cc",
"navigator_contacts.h",
] ]
deps = [ "//third_party/blink/renderer/modules/payments" ] deps = [ "//third_party/blink/renderer/modules/payments" ]
} }
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "third_party/blink/renderer/core/fileapi/blob.h" #include "third_party/blink/renderer/core/fileapi/blob.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h" #include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/core/frame/local_frame.h" #include "third_party/blink/renderer/core/frame/local_frame.h"
#include "third_party/blink/renderer/core/frame/navigator.h"
#include "third_party/blink/renderer/modules/contacts_picker/contact_address.h" #include "third_party/blink/renderer/modules/contacts_picker/contact_address.h"
#include "third_party/blink/renderer/platform/bindings/exception_state.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h"
#include "third_party/blink/renderer/platform/bindings/script_state.h" #include "third_party/blink/renderer/platform/bindings/script_state.h"
...@@ -100,8 +101,22 @@ constexpr char kIcon[] = "icon"; ...@@ -100,8 +101,22 @@ constexpr char kIcon[] = "icon";
} // namespace } // namespace
ContactsManager::ContactsManager(ExecutionContext* execution_context) // static
: contacts_manager_(execution_context) {} const char ContactsManager::kSupplementName[] = "ContactsManager";
// static
ContactsManager* ContactsManager::contacts(Navigator& navigator) {
auto* supplement = Supplement<Navigator>::From<ContactsManager>(navigator);
if (!supplement) {
supplement = MakeGarbageCollected<ContactsManager>(navigator);
ProvideTo(navigator, supplement);
}
return supplement;
}
ContactsManager::ContactsManager(Navigator& navigator)
: Supplement<Navigator>(navigator),
contacts_manager_(navigator.DomWindow()) {}
ContactsManager::~ContactsManager() = default; ContactsManager::~ContactsManager() = default;
...@@ -249,6 +264,7 @@ ScriptPromise ContactsManager::getProperties(ScriptState* script_state) { ...@@ -249,6 +264,7 @@ ScriptPromise ContactsManager::getProperties(ScriptState* script_state) {
void ContactsManager::Trace(Visitor* visitor) const { void ContactsManager::Trace(Visitor* visitor) const {
visitor->Trace(contacts_manager_); visitor->Trace(contacts_manager_);
Supplement<Navigator>::Trace(visitor);
ScriptWrappable::Trace(visitor); ScriptWrappable::Trace(visitor);
} }
......
...@@ -14,20 +14,27 @@ ...@@ -14,20 +14,27 @@
#include "third_party/blink/renderer/platform/heap/thread_state.h" #include "third_party/blink/renderer/platform/heap/thread_state.h"
#include "third_party/blink/renderer/platform/mojo/heap_mojo_remote.h" #include "third_party/blink/renderer/platform/mojo/heap_mojo_remote.h"
#include "third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h" #include "third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h"
#include "third_party/blink/renderer/platform/supplementable.h"
#include "third_party/blink/renderer/platform/wtf/vector.h" #include "third_party/blink/renderer/platform/wtf/vector.h"
namespace blink { namespace blink {
class ExceptionState; class ExceptionState;
class Navigator;
class ScriptPromiseResolver; class ScriptPromiseResolver;
class ScriptState; class ScriptState;
// Represents an the ContactManager, providing access to Contacts. // Represents an the ContactManager, providing access to Contacts.
class ContactsManager final : public ScriptWrappable { class ContactsManager final : public ScriptWrappable,
public Supplement<Navigator> {
DEFINE_WRAPPERTYPEINFO(); DEFINE_WRAPPERTYPEINFO();
public: public:
explicit ContactsManager(ExecutionContext* execution_context); static const char kSupplementName[];
// Web Exposed as navigator.contacts
static ContactsManager* contacts(Navigator& navigator);
explicit ContactsManager(Navigator& navigator);
~ContactsManager() override; ~ContactsManager() override;
// Web-exposed function defined in the IDL file. // Web-exposed function defined in the IDL file.
......
// Copyright 2018 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 "third_party/blink/renderer/modules/contacts_picker/navigator_contacts.h"
#include "third_party/blink/renderer/core/frame/navigator.h"
#include "third_party/blink/renderer/platform/heap/visitor.h"
namespace blink {
// static
const char NavigatorContacts::kSupplementName[] = "NavigatorContacts";
// static
NavigatorContacts& NavigatorContacts::From(Navigator& navigator) {
NavigatorContacts* supplement =
Supplement<Navigator>::From<NavigatorContacts>(navigator);
if (!supplement) {
supplement = MakeGarbageCollected<NavigatorContacts>(navigator);
ProvideTo(navigator, supplement);
}
return *supplement;
}
// static
ContactsManager* NavigatorContacts::contacts(Navigator& navigator) {
// TODO(finnur): Return null when navigator is detached?
return NavigatorContacts::From(navigator).contacts();
}
ContactsManager* NavigatorContacts::contacts() {
if (!contacts_manager_) {
contacts_manager_ = MakeGarbageCollected<ContactsManager>(
GetSupplementable()->GetExecutionContext());
}
return contacts_manager_;
}
void NavigatorContacts::Trace(Visitor* visitor) const {
visitor->Trace(contacts_manager_);
Supplement<Navigator>::Trace(visitor);
}
NavigatorContacts::NavigatorContacts(Navigator& navigator)
: Supplement<Navigator>(navigator) {}
} // namespace blink
// Copyright 2018 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_CONTACTS_PICKER_NAVIGATOR_CONTACTS_H_
#define THIRD_PARTY_BLINK_RENDERER_MODULES_CONTACTS_PICKER_NAVIGATOR_CONTACTS_H_
#include "third_party/blink/renderer/modules/contacts_picker/contacts_manager.h"
#include "third_party/blink/renderer/platform/heap/garbage_collected.h"
#include "third_party/blink/renderer/platform/supplementable.h"
namespace blink {
class Navigator;
// Represents a supplement to Navigator, implementing the Contacts Selector.
class NavigatorContacts final : public GarbageCollected<NavigatorContacts>,
public Supplement<Navigator> {
public:
static const char kSupplementName[];
static NavigatorContacts& From(Navigator& navigator);
// Web Exposed attribute defined in the IDL file.
static ContactsManager* contacts(Navigator& navigator);
ContactsManager* contacts();
explicit NavigatorContacts(Navigator& navigator);
void Trace(Visitor* visitor) const override;
private:
Member<ContactsManager> contacts_manager_;
};
} // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_CONTACTS_PICKER_NAVIGATOR_CONTACTS_H_
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
[ [
Exposed=Window, Exposed=Window,
ImplementedAs=NavigatorContacts ImplementedAs=ContactsManager
] partial interface Navigator { ] partial interface Navigator {
[SecureContext, SameObject, RuntimeEnabled=ContactsManager] readonly attribute ContactsManager contacts; [SecureContext, SameObject, RuntimeEnabled=ContactsManager] readonly attribute ContactsManager contacts;
}; };
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