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