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

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

Issue 1054663002: Implement Permission change observing in Blink. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: relax assert Created 5 years, 8 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
« no previous file with comments | « no previous file | Source/modules/permissions/PermissionStatus.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "core/dom/ContextLifecycleObserver.h" 8 #include "core/dom/ActiveDOMObject.h"
9 #include "core/events/EventTarget.h" 9 #include "core/events/EventTarget.h"
10 #include "platform/heap/Handle.h" 10 #include "platform/heap/Handle.h"
11 #include "public/platform/modules/permissions/WebPermissionObserver.h"
11 #include "public/platform/modules/permissions/WebPermissionStatus.h" 12 #include "public/platform/modules/permissions/WebPermissionStatus.h"
12 #include "public/platform/modules/permissions/WebPermissionType.h" 13 #include "public/platform/modules/permissions/WebPermissionType.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 24 class PermissionStatus final
24 : public RefCountedGarbageCollectedEventTargetWithInlineData<PermissionStatu s> 25 : public RefCountedGarbageCollectedEventTargetWithInlineData<PermissionStatu s>
25 , public ContextLifecycleObserver { 26 , public ActiveDOMObject
27 , public WebPermissionObserver {
26 DEFINE_EVENT_TARGET_REFCOUNTING_WILL_BE_REMOVED(RefCountedGarbageCollected<P ermissionStatus>); 28 DEFINE_EVENT_TARGET_REFCOUNTING_WILL_BE_REMOVED(RefCountedGarbageCollected<P ermissionStatus>);
27 WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(PermissionStatus); 29 WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(PermissionStatus);
28 DEFINE_WRAPPERTYPEINFO(); 30 DEFINE_WRAPPERTYPEINFO();
29 public: 31 public:
30 static PermissionStatus* take(ScriptPromiseResolver*, WebPermissionStatus*, WebPermissionType); 32 static PermissionStatus* take(ScriptPromiseResolver*, WebPermissionStatus*, WebPermissionType);
31 static void dispose(WebPermissionStatus*); 33 static void dispose(WebPermissionStatus*);
32 34
33 PermissionStatus(ExecutionContext*, WebPermissionStatus); 35 static PermissionStatus* create(ExecutionContext*, WebPermissionStatus, WebP ermissionType);
34 ~PermissionStatus() override; 36 ~PermissionStatus() override;
35 37
36 // EventTarget implementation. 38 // EventTarget implementation.
37 const AtomicString& interfaceName() const override; 39 const AtomicString& interfaceName() const override;
38 ExecutionContext* executionContext() const override; 40 ExecutionContext* executionContext() const override;
39 41
40 DECLARE_VIRTUAL_TRACE(); 42 // WebPermissionObserver implementation.
43 void permissionChanged(WebPermissionType, WebPermissionStatus) override;
44
45 // ActiveDOMObject implementation.
46 bool hasPendingActivity() const override;
47 void suspend() override;
48 void resume() override;
49 void stop() override;
41 50
42 String status() const; 51 String status() const;
43 52
44 DEFINE_ATTRIBUTE_EVENT_LISTENER(change); 53 DEFINE_ATTRIBUTE_EVENT_LISTENER(change);
45 54
55 DECLARE_VIRTUAL_TRACE();
56
46 private: 57 private:
58 PermissionStatus(ExecutionContext*, WebPermissionStatus, WebPermissionType);
59
60 void startListening();
61 void stopListening();
62
47 WebPermissionStatus m_status; 63 WebPermissionStatus m_status;
64 WebPermissionType m_type;
65 bool m_listening;
48 }; 66 };
49 67
50 } // namespace blink 68 } // namespace blink
51 69
52 #endif // PermissionStatus_h 70 #endif // PermissionStatus_h
OLDNEW
« no previous file with comments | « no previous file | Source/modules/permissions/PermissionStatus.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698