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

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: Addressed mlamouri@'s comments. 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, MojoPe rmissionStatus status, MojoPermissionName name) 18 PermissionStatus* PermissionStatus::take(ScriptPromiseResolver* resolver, MojoPe rmissionStatus status, MojoPermissionDescriptor descriptor)
19 { 19 {
20 return PermissionStatus::createAndListen(resolver->getExecutionContext(), st atus, name); 20 return PermissionStatus::createAndListen(resolver->getExecutionContext(), st atus, std::move(descriptor));
21 } 21 }
22 22
23 PermissionStatus* PermissionStatus::createAndListen(ExecutionContext* executionC ontext, MojoPermissionStatus status, MojoPermissionName name) 23 PermissionStatus* PermissionStatus::createAndListen(ExecutionContext* executionC ontext, MojoPermissionStatus status, MojoPermissionDescriptor descriptor)
24 { 24 {
25 PermissionStatus* permissionStatus = new PermissionStatus(executionContext, status, name); 25 PermissionStatus* permissionStatus = new PermissionStatus(executionContext, status, std::move(descriptor));
26 permissionStatus->suspendIfNeeded(); 26 permissionStatus->suspendIfNeeded();
27 permissionStatus->startListening(); 27 permissionStatus->startListening();
28 return permissionStatus; 28 return permissionStatus;
29 } 29 }
30 30
31 PermissionStatus::PermissionStatus(ExecutionContext* executionContext, MojoPermi ssionStatus status, MojoPermissionName name) 31 PermissionStatus::PermissionStatus(ExecutionContext* executionContext, MojoPermi ssionStatus status, MojoPermissionDescriptor descriptor)
32 : ActiveScriptWrappable(this) 32 : ActiveScriptWrappable(this)
33 , ActiveDOMObject(executionContext) 33 , ActiveDOMObject(executionContext)
34 , m_status(status) 34 , m_status(status)
35 , m_name(name) 35 , m_descriptor(std::move(descriptor))
36 { 36 {
37 } 37 }
38 38
39 PermissionStatus::~PermissionStatus() 39 PermissionStatus::~PermissionStatus()
40 { 40 {
41 stopListening(); 41 stopListening();
42 } 42 }
43 43
44 const AtomicString& PermissionStatus::interfaceName() const 44 const AtomicString& PermissionStatus::interfaceName() const
45 { 45 {
46 return EventTargetNames::PermissionStatus; 46 return EventTargetNames::PermissionStatus;
47 } 47 }
48 48
49 ExecutionContext* PermissionStatus::getExecutionContext() const 49 ExecutionContext* PermissionStatus::getExecutionContext() const
50 { 50 {
51 return ActiveDOMObject::getExecutionContext(); 51 return ActiveDOMObject::getExecutionContext();
52 } 52 }
53 53
54 void PermissionStatus::permissionChanged(MojoPermissionStatus status) 54 void PermissionStatus::permissionChanged(MojoPermissionStatus status)
55 { 55 {
56 if (m_status == status) 56 if (m_status == status)
57 return; 57 return;
58 58
59 m_status = status; 59 m_status = status;
60 dispatchEvent(Event::create(EventTypeNames::change)); 60 dispatchEvent(Event::create(EventTypeNames::change));
61 m_service->GetNextPermissionChange(m_name, getExecutionContext()->getSecurit yOrigin(), m_status, convertToBaseCallback(WTF::bind(&PermissionStatus::permissi onChanged, wrapWeakPersistent(this)))); 61
62 m_service->GetNextPermissionChange(m_descriptor->Clone(), getExecutionContex t()->getSecurityOrigin(), m_status, convertToBaseCallback(WTF::bind(&PermissionS tatus::permissionChanged, wrapWeakPersistent(this))));
62 } 63 }
63 64
64 bool PermissionStatus::hasPendingActivity() const 65 bool PermissionStatus::hasPendingActivity() const
65 { 66 {
66 return m_service; 67 return m_service;
67 } 68 }
68 69
69 void PermissionStatus::resume() 70 void PermissionStatus::resume()
70 { 71 {
71 startListening(); 72 startListening();
72 } 73 }
73 74
74 void PermissionStatus::suspend() 75 void PermissionStatus::suspend()
75 { 76 {
76 stopListening(); 77 stopListening();
77 } 78 }
78 79
79 void PermissionStatus::stop() 80 void PermissionStatus::stop()
80 { 81 {
81 stopListening(); 82 stopListening();
82 } 83 }
83 84
84 void PermissionStatus::startListening() 85 void PermissionStatus::startListening()
85 { 86 {
86 DCHECK(!m_service); 87 DCHECK(!m_service);
87 Permissions::connectToService(getExecutionContext(), mojo::GetProxy(&m_servi ce)); 88 connectToPermissionService(getExecutionContext(), mojo::GetProxy(&m_service) );
88 m_service->GetNextPermissionChange(m_name, getExecutionContext()->getSecurit yOrigin(), m_status, convertToBaseCallback(WTF::bind(&PermissionStatus::permissi onChanged, wrapWeakPersistent(this)))); 89 m_service->GetNextPermissionChange(m_descriptor->Clone(), getExecutionContex t()->getSecurityOrigin(), m_status, convertToBaseCallback(WTF::bind(&PermissionS tatus::permissionChanged, wrapWeakPersistent(this))));
89 } 90 }
90 91
91 void PermissionStatus::stopListening() 92 void PermissionStatus::stopListening()
92 { 93 {
93 m_service.reset(); 94 m_service.reset();
94 } 95 }
95 96
96 String PermissionStatus::state() const 97 String PermissionStatus::state() const
97 { 98 {
98 switch (m_status) { 99 switch (m_status) {
99 case MojoPermissionStatus::GRANTED: 100 case MojoPermissionStatus::GRANTED:
100 return "granted"; 101 return "granted";
101 case MojoPermissionStatus::DENIED: 102 case MojoPermissionStatus::DENIED:
102 return "denied"; 103 return "denied";
103 case MojoPermissionStatus::ASK: 104 case MojoPermissionStatus::ASK:
104 return "prompt"; 105 return "prompt";
105 } 106 }
106 107
107 ASSERT_NOT_REACHED(); 108 ASSERT_NOT_REACHED();
108 return "denied"; 109 return "denied";
109 } 110 }
110 111
111 DEFINE_TRACE(PermissionStatus) 112 DEFINE_TRACE(PermissionStatus)
112 { 113 {
113 EventTargetWithInlineData::trace(visitor); 114 EventTargetWithInlineData::trace(visitor);
114 ActiveDOMObject::trace(visitor); 115 ActiveDOMObject::trace(visitor);
115 } 116 }
116 117
117 } // namespace blink 118 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698