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

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

Issue 2573573002: Switch PermissionStatus events to an observer model. (Closed)
Patch Set: Rebased. Created 3 years, 11 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 #ifndef PermissionStatus_h 5 #ifndef PermissionStatus_h
6 #define PermissionStatus_h 6 #define PermissionStatus_h
7 7
8 #include "bindings/core/v8/ActiveScriptWrappable.h" 8 #include "bindings/core/v8/ActiveScriptWrappable.h"
9 #include "core/dom/SuspendableObject.h" 9 #include "core/dom/SuspendableObject.h"
10 #include "core/events/EventTarget.h" 10 #include "core/events/EventTarget.h"
11 #include "mojo/public/cpp/bindings/binding.h"
11 #include "platform/heap/Handle.h" 12 #include "platform/heap/Handle.h"
12 #include "public/platform/modules/permissions/permission.mojom-blink.h" 13 #include "public/platform/modules/permissions/permission.mojom-blink.h"
13 #include "wtf/text/AtomicString.h" 14 #include "wtf/text/AtomicString.h"
14 #include "wtf/text/WTFString.h" 15 #include "wtf/text/WTFString.h"
15 16
16 namespace blink { 17 namespace blink {
17 18
18 class ExecutionContext; 19 class ExecutionContext;
19 class ScriptPromiseResolver; 20 class ScriptPromiseResolver;
20 21
21 // Expose the status of a given WebPermissionType for the current 22 // Expose the status of a given WebPermissionType for the current
22 // ExecutionContext. 23 // ExecutionContext.
23 class PermissionStatus final : public EventTargetWithInlineData, 24 class PermissionStatus final : public EventTargetWithInlineData,
24 public ActiveScriptWrappable<PermissionStatus>, 25 public ActiveScriptWrappable<PermissionStatus>,
25 public SuspendableObject { 26 public SuspendableObject,
27 public mojom::blink::PermissionObserver {
26 USING_GARBAGE_COLLECTED_MIXIN(PermissionStatus); 28 USING_GARBAGE_COLLECTED_MIXIN(PermissionStatus);
27 DEFINE_WRAPPERTYPEINFO(); 29 DEFINE_WRAPPERTYPEINFO();
30 USING_PRE_FINALIZER(PermissionStatus, dispose);
28 31
29 using MojoPermissionDescriptor = mojom::blink::PermissionDescriptorPtr; 32 using MojoPermissionDescriptor = mojom::blink::PermissionDescriptorPtr;
30 using MojoPermissionStatus = mojom::blink::PermissionStatus; 33 using MojoPermissionStatus = mojom::blink::PermissionStatus;
31 34
32 public: 35 public:
33 static PermissionStatus* take(ScriptPromiseResolver*, 36 static PermissionStatus* take(ScriptPromiseResolver*,
34 MojoPermissionStatus, 37 MojoPermissionStatus,
35 MojoPermissionDescriptor); 38 MojoPermissionDescriptor);
36 39
37 static PermissionStatus* createAndListen(ExecutionContext*, 40 static PermissionStatus* createAndListen(ExecutionContext*,
38 MojoPermissionStatus, 41 MojoPermissionStatus,
39 MojoPermissionDescriptor); 42 MojoPermissionDescriptor);
40 ~PermissionStatus() override; 43 ~PermissionStatus() override;
44 void dispose();
41 45
42 // EventTarget implementation. 46 // EventTarget implementation.
43 const AtomicString& interfaceName() const override; 47 const AtomicString& interfaceName() const override;
44 ExecutionContext* getExecutionContext() const override; 48 ExecutionContext* getExecutionContext() const override;
45 49
46 // ScriptWrappable implementation. 50 // ScriptWrappable implementation.
47 bool hasPendingActivity() const final; 51 bool hasPendingActivity() const final;
48 52
49 // SuspendableObject implementation. 53 // SuspendableObject implementation.
50 void suspend() override; 54 void suspend() override;
51 void resume() override; 55 void resume() override;
52 void contextDestroyed() override; 56 void contextDestroyed() override;
53 57
54 String state() const; 58 String state() const;
55 void permissionChanged(MojoPermissionStatus);
56 59
57 DEFINE_ATTRIBUTE_EVENT_LISTENER(change); 60 DEFINE_ATTRIBUTE_EVENT_LISTENER(change);
58 61
59 DECLARE_VIRTUAL_TRACE(); 62 DECLARE_VIRTUAL_TRACE();
60 63
61 private: 64 private:
62 PermissionStatus(ExecutionContext*, 65 PermissionStatus(ExecutionContext*,
63 MojoPermissionStatus, 66 MojoPermissionStatus,
64 MojoPermissionDescriptor); 67 MojoPermissionDescriptor);
65 68
66 void startListening(); 69 void startListening();
67 void stopListening(); 70 void stopListening();
68 71
72 void OnPermissionStatusChange(MojoPermissionStatus);
73
69 MojoPermissionStatus m_status; 74 MojoPermissionStatus m_status;
70 MojoPermissionDescriptor m_descriptor; 75 MojoPermissionDescriptor m_descriptor;
71 mojom::blink::PermissionServicePtr m_service; 76 mojo::Binding<mojom::blink::PermissionObserver> m_binding;
72 }; 77 };
73 78
74 } // namespace blink 79 } // namespace blink
75 80
76 #endif // PermissionStatus_h 81 #endif // PermissionStatus_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/modules/permissions/DEPS ('k') | third_party/WebKit/Source/modules/permissions/PermissionStatus.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698