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

Side by Side Diff: sky/specs/apis.md

Issue 694613002: Specs: Simplify the platform by only having one shadow tree per element. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 6 years, 1 month 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 | « sky/examples/radio.sky ('k') | sky/specs/markup.md » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 APIs 1 APIs
2 ==== 2 ====
3 3
4 The Sky core API 4 The Sky core API
5 ---------------- 5 ----------------
6 6
7 ```javascript 7 ```javascript
8 module 'sky:core' { 8 module 'sky:core' {
9 9
10 // EVENTS 10 // EVENTS
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 readonly attribute String tagName; // O(1) 91 readonly attribute String tagName; // O(1)
92 92
93 Boolean hasAttribute(String name); // O(N) in arguments 93 Boolean hasAttribute(String name); // O(N) in arguments
94 String getAttribute(String name); // O(N) in arguments 94 String getAttribute(String name); // O(N) in arguments
95 void setAttribute(String name, String value); // O(N) in arguments 95 void setAttribute(String name, String value); // O(N) in arguments
96 void removeAttribute(String name); // O(N) in arguments 96 void removeAttribute(String name); // O(N) in arguments
97 97
98 // Returns a new Array and new Attr instances every time. 98 // Returns a new Array and new Attr instances every time.
99 Array<Attr> getAttributes(); // O(N) in arguments 99 Array<Attr> getAttributes(); // O(N) in arguments
100 100
101 readonly attribute ShadowRoot? shadowRoot; // O(1) // returns the youngest s hadow root 101 readonly attribute ShadowRoot? shadowRoot; // O(1) // returns the shadow roo t
102 void addShadowRoot(ShadowRoot root); // O(N) in descendants of argument
103 Array<ContentElement> getDestinationInsertionPoints(); // O(N) in number of insertion points the node is in 102 Array<ContentElement> getDestinationInsertionPoints(); // O(N) in number of insertion points the node is in
104 103
105 virtual void attributeChangeCallback(String name, String? oldValue, String? newValue); // noop 104 virtual void attributeChangeCallback(String name, String? oldValue, String? newValue); // noop
106 virtual void shadowRootChangeCallback(ShadowRoot root); // noop
107 // TODO(ianh): does a node ever need to know when it's been redistributed? 105 // TODO(ianh): does a node ever need to know when it's been redistributed?
108 } 106 }
109 Element createElement(String tagName, Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants 107 Element createElement(String tagName, Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants
110 Element createElement(String tagName, Dictionary attributes); // shorthand 108 Element createElement(String tagName, Dictionary attributes); // shorthand
111 Element createElement(String tagName, ChildArguments... nodes); // shorthand 109 Element createElement(String tagName, ChildArguments... nodes); // shorthand
112 Element createElement(String tagName); // shorthand 110 Element createElement(String tagName); // shorthand
113 111
114 Object registerElement(String tagName, Object interfaceObject); // O(N) in num ber of outstanding elements with that tag name to be upgraded 112 dictionary ElementRegistration {
113 String tagName;
114 Boolean shadow;
115 Object prototype;
116 }
117 Object registerElement(ElementRegistration options); // O(N) in number of outs tanding elements with that tag name to be upgraded
115 118
116 interface Text : Node { 119 interface Text : Node {
117 constructor (String value); // O(1) 120 constructor (String value); // O(1)
118 attribute String value; // O(1) 121 attribute String value; // O(1)
119 122
120 void replaceWith(String node); // O(1) // special case override of Node.repl aceWith() 123 void replaceWith(String node); // O(1) // special case override of Node.repl aceWith()
121 124
122 virtual void valueChangeCallback(String? oldValue, String? newValue); // noo p 125 virtual void valueChangeCallback(String? oldValue, String? newValue); // noo p
123 } 126 }
124 127
125 interface DocumentFragment : ParentNode { 128 interface DocumentFragment : ParentNode {
126 constructor (ChildArguments... nodes); // O(N) in number of arguments plus a ll their descendants 129 constructor (ChildArguments... nodes); // O(N) in number of arguments plus a ll their descendants
127 } 130 }
128 131
129 abstract interface TreeScope : ParentNode { 132 abstract interface TreeScope : ParentNode {
130 readonly attribute Document? ownerDocument; // O(1) 133 readonly attribute Document? ownerDocument; // O(1)
131 readonly attribute TreeScope? parentScope; // O(1) 134 readonly attribute TreeScope? parentScope; // O(1)
132 135
133 Element? findId(String id); // O(1) 136 Element? findId(String id); // O(1)
134 } 137 }
135 138
136 interface ShadowRoot : TreeScope { 139 interface ShadowRoot : TreeScope {
137 constructor (ChildArguments... nodes); // O(N) in number of arguments plus a ll their descendants 140 constructor (Element host); // O(1) // note that there is no way in the API to use a newly created ShadowRoot
138 readonly attribute Element? host; // O(1) 141 readonly attribute Element host; // O(1)
139 readonly attribute ShadowRoot? olderShadowRoot; // O(1)
140 void removeShadowRoot(); // O(N) in descendants
141 } 142 }
142 143
143 interface Document : TreeScope { 144 interface Document : TreeScope {
144 constructor (ChildArguments... nodes); // O(N) in number of arguments plus a ll their descendants 145 constructor (ChildArguments... nodes); // O(N) in number of arguments plus a ll their descendants
145 } 146 }
146 147
147 interface SelectorQuery { 148 interface SelectorQuery {
148 constructor (String selector); // O(F()) where F() is the complexity of the selector 149 constructor (String selector); // O(F()) where F() is the complexity of the selector
149 150
150 Boolean matches(Element element); // O(F()) 151 Boolean matches(Element element); // O(F())
151 Element? find(ParentNode root); // O(N*F()) where N is the number of descend ants 152 Element? find(ParentNode root); // O(N*F()) where N is the number of descend ants
152 Array<Element> findAll(ParentNode root); // O(N*F()) where N is the number o f descendants 153 Array<Element> findAll(ParentNode root); // O(N*F()) where N is the number o f descendants
153 } 154 }
154 155
155 // Built-in Elements 156 // Built-in Elements
156 interface ImportElement : Element { } 157 interface ImportElement : Element { }
157 interface TemplateElement : Element { 158 interface TemplateElement : Element {
158 readonly attribute DocumentFragment content; // O(1) 159 readonly attribute DocumentFragment content; // O(1)
159 } 160 }
160 interface ScriptElement : Element { } 161 interface ScriptElement : Element { }
161 interface StyleElement : Element { } 162 interface StyleElement : Element { }
162 interface ContentElement : Element { 163 interface ContentElement : Element {
163 Array<Node> getDistributedNodes(); // O(N) in distributed nodes 164 Array<Node> getDistributedNodes(); // O(N) in distributed nodes
164 } 165 }
165 interface ShadowElement : Element {
166 Array<Node> getDistributedNodes(); // O(N) in distributed nodes
167 }
168 interface ImgElement : Element { } 166 interface ImgElement : Element { }
169 interface IframeElement : Element { } 167 interface IframeElement : Element { }
170 interface TElement : Element { } 168 interface TElement : Element { }
171 interface AElement : Element { } 169 interface AElement : Element { }
172 interface TitleElement : Element { } 170 interface TitleElement : Element { }
173 171
174 172
175 173
176 // MODULES 174 // MODULES
177 abstract interface AbstractModule : EventTarget { 175 abstract interface AbstractModule : EventTarget {
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 // private APIs - see below 258 // private APIs - see below
261 private void method(); 259 private void method();
262 260
263 // arguments and overloading are done as follows 261 // arguments and overloading are done as follows
264 // note that the argument names are only for documentation purposes 262 // note that the argument names are only for documentation purposes
265 ReturnType method(ArgumentType argumentName1, ArgumentType argumentName2); 263 ReturnType method(ArgumentType argumentName1, ArgumentType argumentName2);
266 // the last argument's type can have "..." appended to it to indicate a vara rgs-like situation 264 // the last argument's type can have "..." appended to it to indicate a vara rgs-like situation
267 ReturnType method(ArgumentType argumentName1, ArgumentType... allSubsequentA rguments); 265 ReturnType method(ArgumentType argumentName1, ArgumentType... allSubsequentA rguments);
268 } 266 }
269 267
268 dictionary Options {
269 String foo;
270 Integer bar;
271 }
272
270 // the module can have properties and methods also 273 // the module can have properties and methods also
271 attribute String Foo; 274 attribute String Foo;
272 void method(); 275 void method();
273 276
274 } 277 }
275 ``` 278 ```
276 279
277 ### Private APIs ### 280 ### Private APIs ###
278 281
279 Private APIs are only accessible via Symbol objects, which are then 282 Private APIs are only accessible via Symbol objects, which are then
(...skipping 22 matching lines...) Expand all
302 ### Types ### 305 ### Types ###
303 306
304 The following types are available: 307 The following types are available:
305 308
306 * ``Integer`` - WebIDL ``long long`` 309 * ``Integer`` - WebIDL ``long long``
307 * ``Float`` - WebIDL ``double`` 310 * ``Float`` - WebIDL ``double``
308 * ``String`` - WebIDL ``USVString`` 311 * ``String`` - WebIDL ``USVString``
309 * ``Boolean`` - WebIDL ``boolean`` 312 * ``Boolean`` - WebIDL ``boolean``
310 # ``Object`` - WebIDL ``object`` 313 # ``Object`` - WebIDL ``object``
311 * ``InterfaceName`` - an instance of the interface InterfaceName 314 * ``InterfaceName`` - an instance of the interface InterfaceName
315 * ``DictionaryName`` - an instance of the dictionary DictionaryName
312 * ``Promise<Type>`` - WebIDL ``Promise<T>`` 316 * ``Promise<Type>`` - WebIDL ``Promise<T>``
313 * ``Array<Type>`` - WebIDL ``sequence<T>`` 317 * ``Array<Type>`` - WebIDL ``sequence<T>``
314 * ``Dictionary`` - unordered set of name-value String-String pairs with no dupli cate names 318 * ``Dictionary`` - unordered set of name-value String-String pairs with no dupli cate names
315 * ``Type?`` - union of Type and the singleton type with value "null" (WebIDL nul lable) 319 * ``Type?`` - union of Type and the singleton type with value "null" (WebIDL nul lable)
316 * ``(Type1 or Type2)`` - union of Type1 and Type2 (WebIDL union) 320 * ``(Type1 or Type2)`` - union of Type1 and Type2 (WebIDL union)
317 * ``any`` - union of all types (WebIDL ``any``) 321 * ``any`` - union of all types (WebIDL ``any``)
318 322
319 Methods that return nothing (undefined, in JS) use the keyword "void" 323 Methods that return nothing (undefined, in JS) use the keyword "void"
320 instead of a type. 324 instead of a type.
321 325
(...skipping 23 matching lines...) Expand all
345 the core mojo fabric JS API sky:mojo:fabric:core 349 the core mojo fabric JS API sky:mojo:fabric:core
346 the asyncWait/cancelWait mojo fabric JS API (interface to IPC thread) sky:moj o:fabric:ipc 350 the asyncWait/cancelWait mojo fabric JS API (interface to IPC thread) sky:moj o:fabric:ipc
347 the mojom for the shell, proxying through C++ so that the shell pipe isn't exp osed sky:mojo:shell 351 the mojom for the shell, proxying through C++ so that the shell pipe isn't exp osed sky:mojo:shell
348 the sky API sky:core 352 the sky API sky:core
349 the sky debug symbols for private APIs sky:debug 353 the sky debug symbols for private APIs sky:debug
350 ``` 354 ```
351 355
352 TODO(ianh): determine if we want to separate the "this" from the 356 TODO(ianh): determine if we want to separate the "this" from the
353 Document, especially for Modules, so that exposing a module's element 357 Document, especially for Modules, so that exposing a module's element
354 doesn't expose the module's exports attribute. 358 doesn't expose the module's exports attribute.
OLDNEW
« no previous file with comments | « sky/examples/radio.sky ('k') | sky/specs/markup.md » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698