Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(153)

Side by Side Diff: third_party/WebKit/Source/modules/permissions/PermissionStatus.cpp

Issue 2255933002: Add PermissionDescriptor to the permissions Mojo interface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@no_notification_dispatcher
Patch Set: Print the unexpected permission type. Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "modules/permissions/PermissionStatus.h" 5 #include "modules/permissions/PermissionStatus.h"
6 6
7 #include "bindings/core/v8/ScriptPromiseResolver.h" 7 #include "bindings/core/v8/ScriptPromiseResolver.h"
8 #include "core/dom/Document.h" 8 #include "core/dom/Document.h"
9 #include "core/events/Event.h" 9 #include "core/events/Event.h"
10 #include "modules/EventTargetModulesNames.h" 10 #include "modules/EventTargetModulesNames.h"
11 #include "modules/permissions/Permissions.h" 11 #include "modules/permissions/PermissionUtils.h"
12 #include "public/platform/Platform.h" 12 #include "public/platform/Platform.h"
13 #include "wtf/Functional.h" 13 #include "wtf/Functional.h"
14 14
15 namespace blink { 15 namespace blink {
16 16
17 // static 17 // static
18 PermissionStatus* PermissionStatus::take(ScriptPromiseResolver* resolver, 18 PermissionStatus* PermissionStatus::take(ScriptPromiseResolver* resolver,
19 MojoPermissionStatus status, 19 MojoPermissionStatus status,
20 MojoPermissionName name) { 20 MojoPermissionDescriptor descriptor) {
21 return PermissionStatus::createAndListen(resolver->getExecutionContext(), 21 return PermissionStatus::createAndListen(resolver->getExecutionContext(),
22 status, name); 22 status, std::move(descriptor));
23 } 23 }
24 24
25 PermissionStatus* PermissionStatus::createAndListen( 25 PermissionStatus* PermissionStatus::createAndListen(
26 ExecutionContext* executionContext, 26 ExecutionContext* executionContext,
27 MojoPermissionStatus status, 27 MojoPermissionStatus status,
28 MojoPermissionName name) { 28 MojoPermissionDescriptor descriptor) {
29 PermissionStatus* permissionStatus = 29 PermissionStatus* permissionStatus =
30 new PermissionStatus(executionContext, status, name); 30 new PermissionStatus(executionContext, status, std::move(descriptor));
31 permissionStatus->suspendIfNeeded(); 31 permissionStatus->suspendIfNeeded();
32 permissionStatus->startListening(); 32 permissionStatus->startListening();
33 return permissionStatus; 33 return permissionStatus;
34 } 34 }
35 35
36 PermissionStatus::PermissionStatus(ExecutionContext* executionContext, 36 PermissionStatus::PermissionStatus(ExecutionContext* executionContext,
37 MojoPermissionStatus status, 37 MojoPermissionStatus status,
38 MojoPermissionName name) 38 MojoPermissionDescriptor descriptor)
39 : ActiveScriptWrappable(this), 39 : ActiveScriptWrappable(this),
40 ActiveDOMObject(executionContext), 40 ActiveDOMObject(executionContext),
41 m_status(status), 41 m_status(status),
42 m_name(name) {} 42 m_descriptor(std::move(descriptor)) {}
43 43
44 PermissionStatus::~PermissionStatus() { 44 PermissionStatus::~PermissionStatus() {
45 stopListening(); 45 stopListening();
46 } 46 }
47 47
48 const AtomicString& PermissionStatus::interfaceName() const { 48 const AtomicString& PermissionStatus::interfaceName() const {
49 return EventTargetNames::PermissionStatus; 49 return EventTargetNames::PermissionStatus;
50 } 50 }
51 51
52 ExecutionContext* PermissionStatus::getExecutionContext() const { 52 ExecutionContext* PermissionStatus::getExecutionContext() const {
53 return ActiveDOMObject::getExecutionContext(); 53 return ActiveDOMObject::getExecutionContext();
54 } 54 }
55 55
56 void PermissionStatus::permissionChanged(MojoPermissionStatus status) { 56 void PermissionStatus::permissionChanged(MojoPermissionStatus status) {
57 if (m_status == status) 57 if (m_status == status)
58 return; 58 return;
59 59
60 m_status = status; 60 m_status = status;
61 dispatchEvent(Event::create(EventTypeNames::change)); 61 dispatchEvent(Event::create(EventTypeNames::change));
62
62 m_service->GetNextPermissionChange( 63 m_service->GetNextPermissionChange(
63 m_name, getExecutionContext()->getSecurityOrigin(), m_status, 64 m_descriptor->Clone(), getExecutionContext()->getSecurityOrigin(),
65 m_status,
64 convertToBaseCallback(WTF::bind(&PermissionStatus::permissionChanged, 66 convertToBaseCallback(WTF::bind(&PermissionStatus::permissionChanged,
65 wrapWeakPersistent(this)))); 67 wrapWeakPersistent(this))));
66 } 68 }
67 69
68 bool PermissionStatus::hasPendingActivity() const { 70 bool PermissionStatus::hasPendingActivity() const {
69 return m_service; 71 return m_service;
70 } 72 }
71 73
72 void PermissionStatus::resume() { 74 void PermissionStatus::resume() {
73 startListening(); 75 startListening();
74 } 76 }
75 77
76 void PermissionStatus::suspend() { 78 void PermissionStatus::suspend() {
77 stopListening(); 79 stopListening();
78 } 80 }
79 81
80 void PermissionStatus::stop() { 82 void PermissionStatus::stop() {
81 stopListening(); 83 stopListening();
82 } 84 }
83 85
84 void PermissionStatus::startListening() { 86 void PermissionStatus::startListening() {
85 DCHECK(!m_service); 87 DCHECK(!m_service);
86 Permissions::connectToService(getExecutionContext(), 88 connectToPermissionService(getExecutionContext(), mojo::GetProxy(&m_service));
87 mojo::GetProxy(&m_service));
88 m_service->GetNextPermissionChange( 89 m_service->GetNextPermissionChange(
89 m_name, getExecutionContext()->getSecurityOrigin(), m_status, 90 m_descriptor->Clone(), getExecutionContext()->getSecurityOrigin(),
91 m_status,
90 convertToBaseCallback(WTF::bind(&PermissionStatus::permissionChanged, 92 convertToBaseCallback(WTF::bind(&PermissionStatus::permissionChanged,
91 wrapWeakPersistent(this)))); 93 wrapWeakPersistent(this))));
92 } 94 }
93 95
94 void PermissionStatus::stopListening() { 96 void PermissionStatus::stopListening() {
95 m_service.reset(); 97 m_service.reset();
96 } 98 }
97 99
98 String PermissionStatus::state() const { 100 String PermissionStatus::state() const {
99 switch (m_status) { 101 switch (m_status) {
100 case MojoPermissionStatus::GRANTED: 102 case MojoPermissionStatus::GRANTED:
101 return "granted"; 103 return "granted";
102 case MojoPermissionStatus::DENIED: 104 case MojoPermissionStatus::DENIED:
103 return "denied"; 105 return "denied";
104 case MojoPermissionStatus::ASK: 106 case MojoPermissionStatus::ASK:
105 return "prompt"; 107 return "prompt";
106 } 108 }
107 109
108 ASSERT_NOT_REACHED(); 110 ASSERT_NOT_REACHED();
109 return "denied"; 111 return "denied";
110 } 112 }
111 113
112 DEFINE_TRACE(PermissionStatus) { 114 DEFINE_TRACE(PermissionStatus) {
113 EventTargetWithInlineData::trace(visitor); 115 EventTargetWithInlineData::trace(visitor);
114 ActiveDOMObject::trace(visitor); 116 ActiveDOMObject::trace(visitor);
115 } 117 }
116 118
117 } // namespace blink 119 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698