OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 CustomElementDefinitionBuilder_h | 5 #ifndef CustomElementDefinitionBuilder_h |
6 #define CustomElementDefinitionBuilder_h | 6 #define CustomElementDefinitionBuilder_h |
7 | 7 |
8 #include "core/CoreExport.h" | 8 #include "core/CoreExport.h" |
9 #include "wtf/Allocator.h" | 9 #include "wtf/Allocator.h" |
10 #include "wtf/Noncopyable.h" | 10 #include "wtf/Noncopyable.h" |
11 | 11 |
12 namespace blink { | 12 namespace blink { |
13 | 13 |
14 class CustomElementDefinition; | 14 class CustomElementDefinition; |
15 class CustomElementDescriptor; | 15 class CustomElementDescriptor; |
16 class CustomElementsRegistry; | 16 class CustomElementRegistry; |
17 class ExceptionState; | 17 class ExceptionState; |
18 class ScriptState; | 18 class ScriptState; |
19 class ScriptValue; | 19 class ScriptValue; |
20 | 20 |
21 // Implement CustomElementDefinitionBuilder to provide | 21 // Implement CustomElementDefinitionBuilder to provide |
22 // technology-specific steps for CustomElementsRegistry.define. | 22 // technology-specific steps for CustomElementRegistry.define. |
23 // https://html.spec.whatwg.org/multipage/scripting.html#dom-customelementsregis
try-define | 23 // https://html.spec.whatwg.org/multipage/scripting.html#dom-customelementsregis
try-define |
24 class CORE_EXPORT CustomElementDefinitionBuilder { | 24 class CORE_EXPORT CustomElementDefinitionBuilder { |
25 STACK_ALLOCATED(); | 25 STACK_ALLOCATED(); |
26 WTF_MAKE_NONCOPYABLE(CustomElementDefinitionBuilder); | 26 WTF_MAKE_NONCOPYABLE(CustomElementDefinitionBuilder); |
27 public: | 27 public: |
28 CustomElementDefinitionBuilder() { } | 28 CustomElementDefinitionBuilder() { } |
29 | 29 |
30 // This API necessarily sounds JavaScript specific; this implements | 30 // This API necessarily sounds JavaScript specific; this implements |
31 // some steps of the CustomElementsRegistry.define process, which | 31 // some steps of the CustomElementRegistry.define process, which |
32 // are defined in terms of JavaScript. | 32 // are defined in terms of JavaScript. |
33 | 33 |
34 // Check the constructor is valid. Return false if processing | 34 // Check the constructor is valid. Return false if processing |
35 // should not proceed. | 35 // should not proceed. |
36 virtual bool checkConstructorIntrinsics() = 0; | 36 virtual bool checkConstructorIntrinsics() = 0; |
37 | 37 |
38 // Check the constructor is not already registered in the calling | 38 // Check the constructor is not already registered in the calling |
39 // registry. Return false if processing should not proceed. | 39 // registry. Return false if processing should not proceed. |
40 virtual bool checkConstructorNotRegistered() = 0; | 40 virtual bool checkConstructorNotRegistered() = 0; |
41 | 41 |
42 // Checking the prototype may destroy the window. Return false if | 42 // Checking the prototype may destroy the window. Return false if |
43 // processing should not proceed. | 43 // processing should not proceed. |
44 virtual bool checkPrototype() = 0; | 44 virtual bool checkPrototype() = 0; |
45 | 45 |
46 // Cache properties for build to use. Return false if processing | 46 // Cache properties for build to use. Return false if processing |
47 // should not proceed. | 47 // should not proceed. |
48 virtual bool rememberOriginalProperties() = 0; | 48 virtual bool rememberOriginalProperties() = 0; |
49 | 49 |
50 // Produce the definition. This must produce a definition. | 50 // Produce the definition. This must produce a definition. |
51 virtual CustomElementDefinition* build(const CustomElementDescriptor&) = 0; | 51 virtual CustomElementDefinition* build(const CustomElementDescriptor&) = 0; |
52 }; | 52 }; |
53 | 53 |
54 } // namespace blink | 54 } // namespace blink |
55 | 55 |
56 #endif // CustomElementDefinitionBuilder_h | 56 #endif // CustomElementDefinitionBuilder_h |
OLD | NEW |