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

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

Issue 2108003002: Merge //content/child/permissions into Blink's permissions module. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixing presubmits. Created 4 years, 5 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/PermissionController.h"
12 #include "modules/permissions/Permissions.h" 11 #include "modules/permissions/Permissions.h"
12 #include "platform/mojo/MojoHelper.h"
13 #include "public/platform/Platform.h" 13 #include "public/platform/Platform.h"
14 #include "public/platform/modules/permissions/WebPermissionClient.h"
15 14
16 namespace blink { 15 namespace blink {
17 16
17 using mojom::blink::PermissionName;
esprehn 2016/07/19 04:00:05 MojoPermissionName ? it's weird to alias the two t
Reilly Grant (use Gerrit) 2016/07/19 20:10:28 I needed to use MojoPermissionStatus to avoid a co
18 using MojoPermissionStatus = mojom::blink::PermissionStatus;
19
18 // static 20 // static
19 PermissionStatus* PermissionStatus::take(ScriptPromiseResolver* resolver, WebPer missionStatus status, WebPermissionType type) 21 PermissionStatus* PermissionStatus::take(ScriptPromiseResolver* resolver, MojoPe rmissionStatus status, PermissionName name)
20 { 22 {
21 return PermissionStatus::createAndListen(resolver->getExecutionContext(), st atus, type); 23 return PermissionStatus::createAndListen(resolver->getExecutionContext(), st atus, name);
22 } 24 }
23 25
24 PermissionStatus* PermissionStatus::createAndListen(ExecutionContext* executionC ontext, WebPermissionStatus status, WebPermissionType type) 26 PermissionStatus* PermissionStatus::createAndListen(ExecutionContext* executionC ontext, MojoPermissionStatus status, PermissionName name)
25 { 27 {
26 PermissionStatus* permissionStatus = new PermissionStatus(executionContext, status, type); 28 PermissionStatus* permissionStatus = new PermissionStatus(executionContext, status, name);
27 permissionStatus->suspendIfNeeded(); 29 permissionStatus->suspendIfNeeded();
28 permissionStatus->startListening(); 30 permissionStatus->startListening();
29 return permissionStatus; 31 return permissionStatus;
30 } 32 }
31 33
32 PermissionStatus::PermissionStatus(ExecutionContext* executionContext, WebPermis sionStatus status, WebPermissionType type) 34 PermissionStatus::PermissionStatus(ExecutionContext* executionContext, MojoPermi ssionStatus status, PermissionName name)
33 : ActiveScriptWrappable(this) 35 : ActiveScriptWrappable(this)
34 , ActiveDOMObject(executionContext) 36 , ActiveDOMObject(executionContext)
35 , m_status(status) 37 , m_status(status)
36 , m_type(type) 38 , m_name(name)
37 , m_listening(false)
38 { 39 {
39 } 40 }
40 41
41 PermissionStatus::~PermissionStatus() 42 PermissionStatus::~PermissionStatus()
42 { 43 {
43 stopListening(); 44 stopListening();
44 } 45 }
45 46
46 const AtomicString& PermissionStatus::interfaceName() const 47 const AtomicString& PermissionStatus::interfaceName() const
47 { 48 {
48 return EventTargetNames::PermissionStatus; 49 return EventTargetNames::PermissionStatus;
49 } 50 }
50 51
51 ExecutionContext* PermissionStatus::getExecutionContext() const 52 ExecutionContext* PermissionStatus::getExecutionContext() const
52 { 53 {
53 return ActiveDOMObject::getExecutionContext(); 54 return ActiveDOMObject::getExecutionContext();
54 } 55 }
55 56
56 void PermissionStatus::permissionChanged(WebPermissionType type, WebPermissionSt atus status) 57 void PermissionStatus::permissionChanged(MojoPermissionStatus status)
57 { 58 {
58 ASSERT(m_type == type);
59 if (m_status == status) 59 if (m_status == status)
60 return; 60 return;
61 61
62 m_status = status; 62 m_status = status;
63 dispatchEvent(Event::create(EventTypeNames::change)); 63 dispatchEvent(Event::create(EventTypeNames::change));
64 m_service->GetNextPermissionChange(m_name, getExecutionContext()->getSecurit yOrigin()->toString(), m_status, createBaseCallback(bind(&PermissionStatus::perm issionChanged, wrapWeakPersistent(this))));
esprehn 2016/07/19 04:00:05 createBaseCallback is gone, you can use WTF::bind
Reilly Grant (use Gerrit) 2016/07/19 20:10:28 Someone just renamed it to convertToBaseCallback a
64 } 65 }
65 66
66 bool PermissionStatus::hasPendingActivity() const 67 bool PermissionStatus::hasPendingActivity() const
67 { 68 {
68 return m_listening; 69 return m_service;
69 } 70 }
70 71
71 void PermissionStatus::resume() 72 void PermissionStatus::resume()
72 { 73 {
73 startListening(); 74 startListening();
74 } 75 }
75 76
76 void PermissionStatus::suspend() 77 void PermissionStatus::suspend()
77 { 78 {
78 stopListening(); 79 stopListening();
79 } 80 }
80 81
81 void PermissionStatus::stop() 82 void PermissionStatus::stop()
82 { 83 {
83 stopListening(); 84 stopListening();
84 } 85 }
85 86
86 void PermissionStatus::startListening() 87 void PermissionStatus::startListening()
87 { 88 {
88 ASSERT(!m_listening); 89 DCHECK(!m_service);
89 90 Permissions::connectToService(getExecutionContext(), mojo::GetProxy(&m_servi ce));
90 WebPermissionClient* client = Permissions::getClient(getExecutionContext()); 91 m_service->GetNextPermissionChange(m_name, getExecutionContext()->getSecurit yOrigin()->toString(), m_status, createBaseCallback(bind(&PermissionStatus::perm issionChanged, wrapWeakPersistent(this))));
esprehn 2016/07/19 04:00:05 ditto
91 if (!client)
92 return;
93 m_listening = true;
94 client->startListening(m_type, KURL(KURL(), getExecutionContext()->getSecuri tyOrigin()->toString()), this);
95 } 92 }
96 93
97 void PermissionStatus::stopListening() 94 void PermissionStatus::stopListening()
98 { 95 {
99 if (!m_listening) 96 m_service.reset();
100 return;
101
102 ASSERT(getExecutionContext());
103
104 m_listening = false;
105 WebPermissionClient* client = Permissions::getClient(getExecutionContext());
106 if (!client)
107 return;
108 client->stopListening(this);
109 } 97 }
110 98
111 String PermissionStatus::state() const 99 String PermissionStatus::state() const
112 { 100 {
113 switch (m_status) { 101 switch (m_status) {
114 case WebPermissionStatusGranted: 102 case MojoPermissionStatus::GRANTED:
115 return "granted"; 103 return "granted";
116 case WebPermissionStatusDenied: 104 case MojoPermissionStatus::DENIED:
117 return "denied"; 105 return "denied";
118 case WebPermissionStatusPrompt: 106 case MojoPermissionStatus::ASK:
119 return "prompt"; 107 return "prompt";
120 } 108 }
121 109
122 ASSERT_NOT_REACHED(); 110 ASSERT_NOT_REACHED();
123 return "denied"; 111 return "denied";
124 } 112 }
125 113
126 DEFINE_TRACE(PermissionStatus) 114 DEFINE_TRACE(PermissionStatus)
127 { 115 {
128 EventTargetWithInlineData::trace(visitor); 116 EventTargetWithInlineData::trace(visitor);
129 ActiveDOMObject::trace(visitor); 117 ActiveDOMObject::trace(visitor);
130 } 118 }
131 119
132 } // namespace blink 120 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698