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

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

Issue 695423004: Specs: Drop the concept of late-bound elements. An element can never be upgraded. (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/home.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 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 } 135 }
136 136
137 class SelectorQuery { 137 class SelectorQuery {
138 constructor (String selector); // O(F()) where F() is the complexity of the selector 138 constructor (String selector); // O(F()) where F() is the complexity of the selector
139 139
140 Boolean matches(Element element); // O(F()) 140 Boolean matches(Element element); // O(F())
141 Element? find(ParentNode root); // O(N*F()) where N is the number of descend ants 141 Element? find(ParentNode root); // O(N*F()) where N is the number of descend ants
142 Array<Element> findAll(ParentNode root); // O(N*F()) where N is the number o f descendants 142 Array<Element> findAll(ParentNode root); // O(N*F()) where N is the number o f descendants
143 } 143 }
144 144
145 // Built-in Elements 145
146 // BUILT-IN ELEMENTS
147
146 class ImportElement : Element { 148 class ImportElement : Element {
147 constructor (Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants 149 constructor (Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants
148 constructor (ChildArguments... nodes); // shorthand 150 constructor (ChildArguments... nodes); // shorthand
149 constructor (Dictionary attributes); // shorthand 151 constructor (Dictionary attributes); // shorthand
150 constructor (); // shorthand 152 constructor (); // shorthand
153 constructor attribute String tagName; // O(1) // "import"
154 constructor attribute Boolean shadow; // O(1) // false
151 } 155 }
152 class TemplateElement : Element { 156 class TemplateElement : Element {
153 constructor (Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants 157 constructor (Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants
154 constructor (ChildArguments... nodes); // shorthand 158 constructor (ChildArguments... nodes); // shorthand
155 constructor (Dictionary attributes); // shorthand 159 constructor (Dictionary attributes); // shorthand
156 constructor (); // shorthand 160 constructor (); // shorthand
161 constructor attribute String tagName; // O(1) // "template"
162 constructor attribute Boolean shadow; // O(1) // false
163
157 readonly attribute DocumentFragment content; // O(1) 164 readonly attribute DocumentFragment content; // O(1)
158 } 165 }
159 class ScriptElement : Element { 166 class ScriptElement : Element {
160 constructor (Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants 167 constructor (Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants
161 constructor (ChildArguments... nodes); // shorthand 168 constructor (ChildArguments... nodes); // shorthand
162 constructor (Dictionary attributes); // shorthand 169 constructor (Dictionary attributes); // shorthand
163 constructor (); // shorthand 170 constructor (); // shorthand
171 constructor attribute String tagName; // O(1) // "script"
172 constructor attribute Boolean shadow; // O(1) // false
164 } 173 }
165 class StyleElement : Element { 174 class StyleElement : Element {
166 constructor (Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants 175 constructor (Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants
167 constructor (ChildArguments... nodes); // shorthand 176 constructor (ChildArguments... nodes); // shorthand
168 constructor (Dictionary attributes); // shorthand 177 constructor (Dictionary attributes); // shorthand
169 constructor (); // shorthand 178 constructor (); // shorthand
179 constructor attribute String tagName; // O(1) // "style"
180 constructor attribute Boolean shadow; // O(1) // false
170 } 181 }
171 class ContentElement : Element { 182 class ContentElement : Element {
172 constructor (Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants 183 constructor (Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants
173 constructor (ChildArguments... nodes); // shorthand 184 constructor (ChildArguments... nodes); // shorthand
174 constructor (Dictionary attributes); // shorthand 185 constructor (Dictionary attributes); // shorthand
175 constructor (); // shorthand 186 constructor (); // shorthand
187 constructor attribute String tagName; // O(1) // "content"
188 constructor attribute Boolean shadow; // O(1) // false
189
176 Array<Node> getDistributedNodes(); // O(N) in distributed nodes 190 Array<Node> getDistributedNodes(); // O(N) in distributed nodes
177 } 191 }
178 class ImgElement : Element { 192 class ImgElement : Element {
179 constructor (Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants 193 constructor (Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants
180 constructor (ChildArguments... nodes); // shorthand 194 constructor (ChildArguments... nodes); // shorthand
181 constructor (Dictionary attributes); // shorthand 195 constructor (Dictionary attributes); // shorthand
182 constructor (); // shorthand 196 constructor (); // shorthand
197 constructor attribute String tagName; // O(1) // "img"
198 constructor attribute Boolean shadow; // O(1) // false
199 }
200 class DivElement : Element {
201 constructor (Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants
202 constructor (ChildArguments... nodes); // shorthand
203 constructor (Dictionary attributes); // shorthand
204 constructor (); // shorthand
205 constructor attribute String tagName; // O(1) // "div"
206 constructor attribute Boolean shadow; // O(1) // false
207 }
208 class SpanElement : Element {
209 constructor (Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants
210 constructor (ChildArguments... nodes); // shorthand
211 constructor (Dictionary attributes); // shorthand
212 constructor (); // shorthand
213 constructor attribute String tagName; // O(1) // "span"
214 constructor attribute Boolean shadow; // O(1) // false
183 } 215 }
184 class IframeElement : Element { 216 class IframeElement : Element {
185 constructor (Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants 217 constructor (Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants
186 constructor (ChildArguments... nodes); // shorthand 218 constructor (ChildArguments... nodes); // shorthand
187 constructor (Dictionary attributes); // shorthand 219 constructor (Dictionary attributes); // shorthand
188 constructor (); // shorthand 220 constructor (); // shorthand
221 constructor attribute String tagName; // O(1) // "iframe"
222 constructor attribute Boolean shadow; // O(1) // false
189 } 223 }
190 class TElement : Element { 224 class TElement : Element {
191 constructor (Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants 225 constructor (Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants
192 constructor (ChildArguments... nodes); // shorthand 226 constructor (ChildArguments... nodes); // shorthand
193 constructor (Dictionary attributes); // shorthand 227 constructor (Dictionary attributes); // shorthand
194 constructor (); // shorthand 228 constructor (); // shorthand
229 constructor attribute String tagName; // O(1) // "t"
230 constructor attribute Boolean shadow; // O(1) // false
195 } 231 }
196 class AElement : Element { 232 class AElement : Element {
197 constructor (Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants 233 constructor (Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants
198 constructor (ChildArguments... nodes); // shorthand 234 constructor (ChildArguments... nodes); // shorthand
199 constructor (Dictionary attributes); // shorthand 235 constructor (Dictionary attributes); // shorthand
200 constructor (); // shorthand 236 constructor (); // shorthand
237 constructor attribute String tagName; // O(1) // "a"
238 constructor attribute Boolean shadow; // O(1) // false
201 } 239 }
202 class TitleElement : Element { 240 class TitleElement : Element {
203 constructor (Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants 241 constructor (Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants
204 constructor (ChildArguments... nodes); // shorthand 242 constructor (ChildArguments... nodes); // shorthand
205 constructor (Dictionary attributes); // shorthand 243 constructor (Dictionary attributes); // shorthand
206 constructor (); // shorthand 244 constructor (); // shorthand
245 constructor attribute String tagName; // O(1) // "title"
246 constructor attribute Boolean shadow; // O(1) // false
247 }
248 class ErrorElement : Element {
249 constructor (Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants
250 constructor (ChildArguments... nodes); // shorthand
251 constructor (Dictionary attributes); // shorthand
252 constructor (); // shorthand
253 constructor attribute String tagName; // O(1) // "error"
254 constructor attribute Boolean shadow; // O(1) // false
207 } 255 }
208 256
209 257
210 258
259 // MODULES
260
211 dictionary ElementRegistration { 261 dictionary ElementRegistration {
212 String tagName; 262 String tagName;
213 Boolean shadow = false; 263 Boolean shadow = false;
214 Object prototype = Element; 264 Object prototype = Element;
215 } 265 }
216 266
217 interface ElementConstructor { 267 interface ElementConstructor {
218 constructor (Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants 268 constructor (Dictionary attributes, ChildArguments... nodes); // O(M+N), M = number of attributes, N = number of nodes plus all their descendants
219 constructor (ChildArguments... nodes); // shorthand 269 constructor (ChildArguments... nodes); // shorthand
220 constructor (Dictionary attributes); // shorthand 270 constructor (Dictionary attributes); // shorthand
221 constructor (); // shorthand 271 constructor (); // shorthand
222 272
223 constructor attribute String tagName; 273 constructor attribute String tagName;
224 constructor attribute Boolean shadow; 274 constructor attribute Boolean shadow;
225 } 275 }
226 276
227 // MODULES
228 abstract class AbstractModule : EventTarget { 277 abstract class AbstractModule : EventTarget {
229 readonly attribute Document document; // O(1) // the Documentof the module o r application 278 readonly attribute Document document; // O(1) // the Documentof the module o r application
230 Promise<any> import(String url); // O(Yikes) // returns the module's exports 279 Promise<any> import(String url); // O(Yikes) // returns the module's exports
231 280
232 readonly attribute String url; 281 readonly attribute String url;
233 282
234 // createElement() lets you create elements that will be upgraded later when you register the element 283 ElementConstructor registerElement(ElementRegistration options); // O(1)
235 Element createElement(String tagName, Dictionary attributes, ChildArguments. .. nodes); // O(M+N), M = number of attributes, N = number of nodes plus all the ir descendants
236 Element createElement(String tagName, Dictionary attributes); // shorthand
237 Element createElement(String tagName, ChildArguments... nodes); // shorthand
238 Element createElement(String tagName); // shorthand
239
240 ElementConstructor registerElement(ElementRegistration options); // O(N) in number of outstanding elements with that tag name to be upgraded
241 // if you call registerElement() with an object that was created by 284 // if you call registerElement() with an object that was created by
242 // registerElement(), it just returns the object after registering it, 285 // registerElement(), it just returns the object after registering it,
243 // rather than creating a new constructor 286 // rather than creating a new constructor
244 287
245 ScriptElement? currentScript; // O(1) // returns the <script> element curren tly being executed if any, and if it's in this module; else null 288 ScriptElement? currentScript; // O(1) // returns the <script> element curren tly being executed if any, and if it's in this module; else null
246 } 289 }
247 290
248 class Module : AbstractModule { 291 class Module : AbstractModule {
249 constructor (Application application, Document document, String url); // O(1 ) 292 constructor (Application application, Document document, String url); // O(1 )
250 readonly attribute Application application; // O(1) 293 readonly attribute Application application; // O(1)
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 the core mojo fabric JS API sky:mojo:fabric:core 475 the core mojo fabric JS API sky:mojo:fabric:core
433 the asyncWait/cancelWait mojo fabric JS API (interface to IPC thread) sky:moj o:fabric:ipc 476 the asyncWait/cancelWait mojo fabric JS API (interface to IPC thread) sky:moj o:fabric:ipc
434 the mojom for the shell, proxying through C++ so that the shell pipe isn't exp osed sky:mojo:shell 477 the mojom for the shell, proxying through C++ so that the shell pipe isn't exp osed sky:mojo:shell
435 the sky API sky:core 478 the sky API sky:core
436 the sky debug symbols for private APIs sky:debug 479 the sky debug symbols for private APIs sky:debug
437 ``` 480 ```
438 481
439 TODO(ianh): determine if we want to separate the "this" from the 482 TODO(ianh): determine if we want to separate the "this" from the
440 Document, especially for Modules, so that exposing a module's element 483 Document, especially for Modules, so that exposing a module's element
441 doesn't expose the module's exports attribute. 484 doesn't expose the module's exports attribute.
OLDNEW
« no previous file with comments | « sky/examples/home.sky ('k') | sky/specs/markup.md » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698