New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Mutation observer API #16190
Closed
+612
−452
Closed
Mutation observer API #16190
Changes from all commits
Commits
Show all changes
23 commits
Select commit
Hold shift + click to select a range
73f2c6e
Initial Files for MutationObserverAPI
srivassumit bee1340
add a vector of MutationObserver objects as a member of ScriptThread
srivassumit a5af9a2
Merge branch 'master' of https://github.com/servo/servo into Mutation…
srivassumit 4ec5d92
Merge branch 'master' of https://github.com/servo/servo into Mutation…
srivassumit 16c09d4
incomplete code for mutationobserver and mutationrecord
srivassumit e162f8a
fixed build errors, Constructor is pending
srivassumit b0af820
Resolving merge conflicts
krishnakarthick1993 8e6d4e9
added Mutation Observer Constructor
srivassumit 4797cc3
Merge branch 'MutationObserver-dev' of https://github.com/srivassumit…
srivassumit dd9ea19
Merge branch 'master' of https://github.com/servo/servo into Mutation…
srivassumit 4db8c26
changes for constructor
srivassumit 1a7e2d4
Merge branch 'master' of https://github.com/servo/servo into Mutation…
srivassumit ef51869
Update mutationrecord.rs
srivassumit 2d10eb7
Update script_thread.rs
srivassumit 3dd78ed
more changes as per review comments
srivassumit 0160982
fixed test test-tidy issues, accessed ScriptThread from mutationobserver
srivassumit eefb95b
Merge branch 'master' of https://github.com/servo/servo into Mutation…
srivassumit 2cce8c5
modifications for review comments
srivassumit 7115abd
Merge branch 'master' of https://github.com/servo/servo into Mutation…
srivassumit 2821def
changes as per review comments
srivassumit a82e79d
Merge branch 'master' of https://github.com/servo/servo into Mutatio…
srivassumit 3bd4438
removed unused imports and fixed review comments.
srivassumit c6739ef
removed unused import
srivassumit File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.
| @@ -0,0 +1,41 @@ | ||
| /* This Source Code Form is subject to the terms of the Mozilla Public | ||
| * License, v. 2.0. If a copy of the MPL was not distributed with this | ||
| * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | ||
|
|
||
| use dom::bindings::codegen::Bindings::MutationObserverBinding; | ||
| use dom::bindings::codegen::Bindings::MutationObserverBinding::MutationCallback; | ||
| use dom::bindings::error::Fallible; | ||
| use dom::bindings::js::Root; | ||
| use dom::bindings::reflector::{Reflector, reflect_dom_object}; | ||
| use dom::window::Window; | ||
| use dom_struct::dom_struct; | ||
| use script_thread::ScriptThread; | ||
| use std::ops::Deref; | ||
| use std::rc::Rc; | ||
|
|
||
| #[dom_struct] | ||
| pub struct MutationObserver { | ||
| reflector_: Reflector, | ||
| #[ignore_heap_size_of = "can't measure Rc values"] | ||
| callback: Rc<MutationCallback>, | ||
| } | ||
|
|
||
| impl MutationObserver { | ||
| fn new(global: &Window, callback: Rc<MutationCallback>) -> Root<MutationObserver> { | ||
| let boxed_observer = box MutationObserver::new_inherited(callback); | ||
| reflect_dom_object(boxed_observer, global, MutationObserverBinding::Wrap) | ||
| } | ||
|
|
||
| fn new_inherited(callback: Rc<MutationCallback>) -> MutationObserver { | ||
| MutationObserver { | ||
| reflector_: Reflector::new(), | ||
| callback: callback, | ||
| } | ||
| } | ||
|
|
||
| pub fn Constructor(global: &Window, callback: Rc<MutationCallback>) -> Fallible<Root<MutationObserver>> { | ||
| let observer = MutationObserver::new(global, callback); | ||
| ScriptThread::add_mutation_observer(observer.deref()); | ||
| return Ok(observer); | ||
| } | ||
| } |
| @@ -0,0 +1,38 @@ | ||
| /* This Source Code Form is subject to the terms of the Mozilla Public | ||
| * License, v. 2.0. If a copy of the MPL was not distributed with this | ||
| * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | ||
|
|
||
| use dom::bindings::codegen::Bindings::MutationRecordBinding::MutationRecordBinding::MutationRecordMethods; | ||
| use dom::bindings::js::{JS, Root}; | ||
| use dom::bindings::reflector::Reflector; | ||
| use dom::bindings::str::DOMString; | ||
| use dom::node::Node; | ||
| use dom_struct::dom_struct; | ||
|
|
||
| #[dom_struct] | ||
| pub struct MutationRecord { | ||
| reflector_: Reflector, | ||
|
|
||
| //property for record type | ||
| record_type: DOMString, | ||
|
|
||
| //property for target node | ||
| target: JS<Node>, | ||
| } | ||
|
|
||
| impl MutationRecord { | ||
|
|
||
| } | ||
|
|
||
| impl MutationRecordMethods for MutationRecord { | ||
| // https://dom.spec.whatwg.org/#dom-mutationrecord-type | ||
| fn Type(&self) -> DOMString { | ||
| self.record_type.clone() | ||
| } | ||
|
|
||
| // https://dom.spec.whatwg.org/#dom-mutationrecord-target | ||
| fn Target(&self) -> Root<Node> { | ||
| return Root::from_ref(&*self.target); | ||
| } | ||
|
|
||
| } |
| @@ -0,0 +1,27 @@ | ||
| /* This Source Code Form is subject to the terms of the Mozilla Public | ||
| * License, v. 2.0. If a copy of the MPL was not distributed with this | ||
| * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | ||
| /* | ||
| * The origin of this IDL file is: | ||
| * https://dom.spec.whatwg.org/#mutationobserver | ||
| */ | ||
|
|
||
| // https://dom.spec.whatwg.org/#mutationobserver | ||
| [Pref="dom.mutation_observer.enabled", Constructor(MutationCallback callback)] | ||
| interface MutationObserver { | ||
| //void observe(Node target, optional MutationObserverInit options); | ||
| //void disconnect(); | ||
| //sequence<MutationRecord> takeRecords(); | ||
| }; | ||
|
|
||
| callback MutationCallback = void (sequence<MutationRecord> mutations, MutationObserver observer); | ||
|
|
||
| dictionary MutationObserverInit { | ||
| boolean childList = false; | ||
| boolean attributes; | ||
| boolean characterData; | ||
| boolean subtree = false; | ||
| boolean attributeOldValue; | ||
| boolean characterDataOldValue; | ||
| sequence<DOMString> attributeFilter; | ||
| }; |
| @@ -0,0 +1,24 @@ | ||
| /* This Source Code Form is subject to the terms of the Mozilla Public | ||
| * License, v. 2.0. If a copy of the MPL was not distributed with this | ||
| * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | ||
| /* | ||
| * The origin of this IDL file is: | ||
| * https://dom.spec.whatwg.org/#mutationrecord | ||
| */ | ||
|
|
||
| // https://dom.spec.whatwg.org/#mutationrecord | ||
| [Pref="dom.mutation_observer.enabled", Exposed=Window] | ||
| interface MutationRecord { | ||
| readonly attribute DOMString type; | ||
| [SameObject] | ||
| readonly attribute Node target; | ||
| //[SameObject] | ||
| //readonly attribute NodeList addedNodes; | ||
| //[SameObject] | ||
| //readonly attribute NodeList removedNodes; | ||
| //readonly attribute Node? previousSibling; | ||
| //readonly attribute Node? nextSibling; | ||
| //readonly attribute DOMString? attributeName; | ||
| //readonly attribute DOMString? attributeNamespace; | ||
| //readonly attribute DOMString? oldValue; | ||
| }; |
| @@ -1,5 +1,5 @@ | ||
| [contenttype_datauri_01.html] | ||
| type: testharness | ||
| [Data URI document.contentType === 'text/plain' when data URI MIME type is not set] | ||
| expected: FAIL | ||
| expected: TIMEOUT | ||
|
|
| @@ -1,5 +1,5 @@ | ||
| [contenttype_datauri_02.html] | ||
| type: testharness | ||
| [Data URI document.contentType === 'text/html' when data URI MIME type is set] | ||
| expected: FAIL | ||
| expected: TIMEOUT | ||
|
|
| @@ -1,5 +1,5 @@ | ||
| [contenttype_javascripturi.html] | ||
| type: testharness | ||
| [Javascript URI document.contentType === 'text/html'] | ||
| expected: FAIL | ||
| expected: TIMEOUT | ||
jdm
Member
|
||
|
|
||
Oops, something went wrong.
ProTip!
Use n and p to navigate between commits in a pull request.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Is this really needed? I'd expect it to just work without this.