Best JavaScript code snippet using best
recycling-tests.js
Source:recycling-tests.js
1import Ember from 'ember';2import { test } from 'ember-qunit';3import moduleForView from '../helpers/module-for-view';4import {compile, generateContent, sortElementsByPosition, itemPositions} from '../helpers/helpers';5import ListView from 'ember-list-view';6import ListItemView from 'ember-list-view/list-item-view';7import ReusableListItemView from 'ember-list-view/reusable-list-item-view';8moduleForView('list-view', 'View recycling', {});9test("recycling complex views long list", function(assert){10 var content = generateContent(100),11 height = 50,12 rowHeight = 50,13 itemViewClass = ListItemView.extend({14 innerViewClass: Ember.View.extend({15 didInsertElement: function(){16 innerViewInsertionCount++;17 },18 willDestroyElement: function(){19 innerViewDestroyCount++;20 }21 }),22 template: compile("{{name}} {{#view view.innerViewClass}}{{/view}}")23 });24 var listViewInsertionCount, listViewDestroyCount,25 innerViewInsertionCount, innerViewDestroyCount;26 listViewInsertionCount = 0;27 listViewDestroyCount = 0;28 innerViewInsertionCount = 0;29 innerViewDestroyCount = 0;30 var view;31 Ember.run(this, function(){32 view = this.subject({33 content: content,34 height: height,35 rowHeight: rowHeight,36 itemViewClass: itemViewClass,37 scrollTop: 0,38 didInsertElement: function() {39 listViewInsertionCount++;40 },41 willDestroyElement: function() {42 listViewDestroyCount++;43 }44 });45 });46 assert.equal(listViewInsertionCount, 0, "expected number of listView's didInsertElement");47 assert.equal(listViewDestroyCount, 0, "expected number of listView's willDestroyElement");48 this.render();49 assert.equal(listViewInsertionCount, 1, "expected number of listView's didInsertElement");50 assert.equal(listViewDestroyCount, 0, "expected number of listView's willDestroyElement");51 assert.equal(innerViewInsertionCount, 2, "expected number of innerView's didInsertElement");52 assert.equal(innerViewDestroyCount, 0, "expected number of innerView's didInsertElement");53 assert.equal(this.$('.ember-list-item-view').length, 2, "The correct number of rows were rendered");54 innerViewInsertionCount = 0;55 innerViewDestroyCount = 0;56 Ember.run(function() {57 view.scrollTo(50);58 });59 assert.equal(this.$('.ember-list-item-view').length, 2, "The correct number of rows were rendered");60 assert.equal(innerViewInsertionCount, 1, "expected number of innerView's didInsertElement");61 assert.equal(innerViewDestroyCount, 1, "expected number of innerView's willDestroyElement");62 assert.equal(listViewInsertionCount, 1, "expected number of listView's didInsertElement");63 assert.equal(listViewDestroyCount, 0, "expected number of listView's willDestroyElement");64 innerViewInsertionCount = 0;65 innerViewDestroyCount = 0;66 Ember.run(function() {67 view.scrollTo(0);68 });69 assert.equal(this.$('.ember-list-item-view').length, 2, "The correct number of rows were rendered");70 assert.equal(innerViewInsertionCount, 1, "expected number of innerView's didInsertElement");71 assert.equal(innerViewDestroyCount, 1, "expected number of innerView's willDestroyElement");72 assert.equal(listViewInsertionCount, 1, "expected number of listView's didInsertElement");73 assert.equal(listViewDestroyCount, 0, "expected number of listView's willDestroyElement");74});75test("recycling complex views short list", function(assert){76 var content = generateContent(2),77 height = 50,78 rowHeight = 50,79 itemViewClass = ListItemView.extend({80 innerViewClass: Ember.View.extend({81 didInsertElement: function(){82 innerViewInsertionCount++;83 },84 willDestroyElement: function(){85 innerViewDestroyCount++;86 }87 }),88 template: compile("{{name}} {{#view view.innerViewClass}}{{/view}}")89 });90 var listViewInsertionCount, listViewDestroyCount,91 innerViewInsertionCount, innerViewDestroyCount;92 listViewInsertionCount = 0;93 listViewDestroyCount = 0;94 innerViewInsertionCount = 0;95 innerViewDestroyCount = 0;96 var view;97 Ember.run(this, function(){98 view = this.subject({99 content: content,100 height: height,101 rowHeight: rowHeight,102 itemViewClass: itemViewClass,103 scrollTop: 0,104 didInsertElement: function() {105 listViewInsertionCount++;106 },107 willDestroyElement: function() {108 listViewDestroyCount++;109 }110 });111 });112 assert.equal(listViewInsertionCount, 0, "expected number of listView's didInsertElement (pre-append)");113 assert.equal(listViewDestroyCount, 0, "expected number of listView's willDestroyElement (pre-append)");114 this.render();115 assert.equal(listViewInsertionCount, 1, "expected number of listView's didInsertElement (post-append)");116 assert.equal(listViewDestroyCount, 0, "expected number of listView's willDestroyElement (post-append)");117 assert.equal(innerViewInsertionCount, 2, "expected number of innerView's didInsertElement (post-append)");118 assert.equal(innerViewDestroyCount, 0, "expected number of innerView's didInsertElement (post-append)");119 assert.equal(this.$('.ember-list-item-view').length, 2, "The correct number of rows were rendered");120 innerViewInsertionCount = 0;121 innerViewDestroyCount = 0;122 view.scrollTo(50);123 assert.equal(this.$('.ember-list-item-view').length, 2, "The correct number of rows were rendered (post-scroll to 50)");124 assert.equal(innerViewInsertionCount, 0, "expected number of innerView's didInsertElement (post-scroll to 50)");125 assert.equal(innerViewDestroyCount, 0, "expected number of innerView's willDestroyElement (post-scroll to 50)");126 assert.equal(listViewInsertionCount, 1, "expected number of listView's didInsertElement (post-scroll to 50)");127 assert.equal(listViewDestroyCount, 0, "expected number of listView's willDestroyElement (post-scroll to 50)");128 innerViewInsertionCount = 0;129 innerViewDestroyCount = 0;130 view.scrollTo(0);131 assert.equal(this.$('.ember-list-item-view').length, 2, "The correct number of rows were rendered (post-scroll to 0)");132 assert.equal(innerViewInsertionCount, 0, "expected number of innerView's didInsertElement (post-scroll to 0)");133 assert.equal(innerViewDestroyCount, 0, "expected number of innerView's willDestroyElement (post-scroll to 0)");134 assert.equal(listViewInsertionCount, 1, "expected number of listView's didInsertElement (post-scroll to 0)");135 assert.equal(listViewDestroyCount, 0, "expected number of listView's willDestroyElement (post-scroll to 0)");136});137test("recycling complex views long list, with ReusableListItemView", function(assert){138 var content = generateContent(50),139 height = 50,140 rowHeight = 50,141 itemViewClass = Ember.ReusableListItemView.extend({142 innerViewClass: Ember.View.extend({143 didInsertElement: function(){144 innerViewInsertionCount++;145 },146 willDestroyElement: function(){147 innerViewDestroyCount++;148 }149 }),150 didInsertElement: function(){151 this._super();152 listItemViewInsertionCount++;153 },154 willDestroyElement: function(){155 this._super();156 listItemViewDestroyCount++;157 },158 template: compile("{{name}} {{#view view.innerViewClass}}{{/view}}")159 });160 var listViewInsertionCount, listViewDestroyCount,161 listItemViewInsertionCount, listItemViewDestroyCount,162 innerViewInsertionCount, innerViewDestroyCount;163 listViewInsertionCount = 0;164 listViewDestroyCount = 0;165 listItemViewInsertionCount = 0;166 listItemViewDestroyCount = 0;167 innerViewInsertionCount = 0;168 innerViewDestroyCount = 0;169 var view;170 Ember.run(this, function(){171 view = this.subject({172 content: content,173 height: height,174 rowHeight: rowHeight,175 itemViewClass: itemViewClass,176 scrollTop: 0,177 didInsertElement: function() {178 listViewInsertionCount++;179 },180 willDestroyElement: function() {181 listViewDestroyCount++;182 }183 });184 });185 assert.equal(listViewInsertionCount, 0, "expected number of listView's didInsertElement (pre-append)");186 assert.equal(listViewDestroyCount, 0, "expected number of listView's willDestroyElement (pre-append)");187 assert.equal(listItemViewInsertionCount, 0, "expected number of listItemView's didInsertElement (pre-append)");188 assert.equal(listItemViewDestroyCount, 0, "expected number of listItemView's willDestroyElement (pre-append)");189 assert.equal(innerViewInsertionCount, 0, "expected number of innerView's didInsertElement (pre-append)");190 assert.equal(innerViewDestroyCount, 0, "expected number of innerView's willDestroyElement (pre-append)");191 this.render();192 assert.equal(listViewInsertionCount, 1, "expected number of listView's didInsertElement (post-append)");193 assert.equal(listViewDestroyCount, 0, "expected number of listView's willDestroyElement (post-append)");194 assert.equal(listItemViewInsertionCount, 2, "expected number of listItemView's didInsertElement (post-append)");195 assert.equal(listItemViewDestroyCount, 0, "expected number of listItemView's didInsertElement (post-append)");196 assert.equal(innerViewInsertionCount, 2, "expected number of innerView's didInsertElement (post-append)");197 assert.equal(innerViewDestroyCount, 0, "expected number of innerView's didInsertElement (post-append)");198 assert.equal(this.$('.ember-list-item-view').length, 2, "The correct number of rows were rendered");199 listItemViewInsertionCount = 0;200 listItemViewDestroyCount = 0;201 innerViewInsertionCount = 0;202 innerViewDestroyCount = 0;203 view.scrollTo(50);204 assert.equal(this.$('.ember-list-item-view').length, 2, "The correct number of rows were rendered (post-scroll to 50)");205 assert.equal(listItemViewInsertionCount, 0, "expected number of listItemView's didInsertElement (post-scroll to 50)");206 assert.equal(listItemViewDestroyCount, 0, "expected number of listItemView's willDestroyElement (post-scroll to 50)");207 assert.equal(innerViewInsertionCount, 0, "expected number of innerView's didInsertElement (post-scroll to 50)");208 assert.equal(innerViewDestroyCount, 0, "expected number of innerView's willDestroyElement (post-scroll to 50)");209 listItemViewInsertionCount = 0;210 listItemViewDestroyCount = 0;211 innerViewInsertionCount = 0;212 innerViewDestroyCount = 0;213 view.scrollTo(0);214 assert.equal(this.$('.ember-list-item-view').length, 2, "The correct number of rows were rendered (post-scroll to 0)");215 assert.equal(listItemViewInsertionCount, 0, "expected number of listItemView's didInsertElement (post-scroll to 0)");216 assert.equal(listItemViewDestroyCount, 0, "expected number of listItemView's willDestroyElement (post-scroll to 0)");217 assert.equal(innerViewInsertionCount, 0, "expected number of innerView's didInsertElement (post-scroll to 0)");218 assert.equal(innerViewDestroyCount, 0, "expected number of innerView's willDestroyElement (post-scroll to 0)");219});220test("recycling complex views short list, with ReusableListItemView", function(assert){221 var content = generateContent(2),222 height = 50,223 rowHeight = 50,224 itemViewClass = ReusableListItemView.extend({225 innerViewClass: Ember.View.extend({226 didInsertElement: function(){227 innerViewInsertionCount++;228 },229 willDestroyElement: function(){230 innerViewDestroyCount++;231 }232 }),233 didInsertElement: function(){234 this._super();235 listItemViewInsertionCount++;236 },237 willDestroyElement: function(){238 this._super();239 listItemViewDestroyCount++;240 },241 template: compile("{{name}} {{#view view.innerViewClass}}{{/view}}")242 });243 var listViewInsertionCount, listViewDestroyCount,244 listItemViewInsertionCount, listItemViewDestroyCount,245 innerViewInsertionCount, innerViewDestroyCount;246 listViewInsertionCount = 0;247 listViewDestroyCount = 0;248 listItemViewInsertionCount = 0;249 listItemViewDestroyCount = 0;250 innerViewInsertionCount = 0;251 innerViewDestroyCount = 0;252 var view;253 Ember.run(this, function(){254 view = this.subject({255 content: content,256 height: height,257 rowHeight: rowHeight,258 itemViewClass: itemViewClass,259 scrollTop: 0,260 didInsertElement: function() {261 listViewInsertionCount++;262 },263 willDestroyElement: function() {264 listViewDestroyCount++;265 }266 });267 });268 assert.equal(listViewInsertionCount, 0, "expected number of listView's didInsertElement (pre-append)");269 assert.equal(listViewDestroyCount, 0, "expected number of listView's willDestroyElement (pre-append)");270 assert.equal(listItemViewInsertionCount, 0, "expected number of listItemView's didInsertElement (pre-append)");271 assert.equal(listItemViewDestroyCount, 0, "expected number of listItemView's willDestroyElement (pre-append)");272 assert.equal(innerViewInsertionCount, 0, "expected number of innerView's didInsertElement (pre-append)");273 assert.equal(innerViewDestroyCount, 0, "expected number of innerView's willDestroyElement (pre-append)");274 this.render();275 assert.equal(listViewInsertionCount, 1, "expected number of listView's didInsertElement (post-append)");276 assert.equal(listViewDestroyCount, 0, "expected number of listView's willDestroyElement (post-append)");277 assert.equal(listItemViewInsertionCount, 2, "expected number of listItemView's didInsertElement (post-append)");278 assert.equal(listItemViewDestroyCount, 0, "expected number of listItemView's didInsertElement (post-append)");279 assert.equal(innerViewInsertionCount, 2, "expected number of innerView's didInsertElement (post-append)");280 assert.equal(innerViewDestroyCount, 0, "expected number of innerView's didInsertElement (post-append)");281 assert.equal(this.$('.ember-list-item-view').length, 2, "The correct number of rows were rendered");282 listItemViewInsertionCount = 0;283 listItemViewDestroyCount = 0;284 innerViewInsertionCount = 0;285 innerViewDestroyCount = 0;286 view.scrollTo(50);287 assert.equal(this.$('.ember-list-item-view').length, 2, "The correct number of rows were rendered (post-scroll to 50)");288 assert.equal(listItemViewInsertionCount, 0, "expected number of listItemView's didInsertElement (post-scroll to 50)");289 assert.equal(listItemViewDestroyCount, 0, "expected number of listItemView's willDestroyElement (post-scroll to 50)");290 assert.equal(innerViewInsertionCount, 0, "expected number of innerView's didInsertElement (post-scroll to 50)");291 assert.equal(innerViewDestroyCount, 0, "expected number of innerView's willDestroyElement (post-scroll to 50)");292 listItemViewInsertionCount = 0;293 listItemViewDestroyCount = 0;294 innerViewInsertionCount = 0;295 innerViewDestroyCount = 0;296 view.scrollTo(0);297 assert.equal(this.$('.ember-list-item-view').length, 2, "The correct number of rows were rendered (post-scroll to 0)");298 assert.equal(listItemViewInsertionCount, 0, "expected number of listItemView's didInsertElement (post-scroll to 0)");299 assert.equal(listItemViewDestroyCount, 0, "expected number of listItemView's willDestroyElement (post-scroll to 0)");300 assert.equal(innerViewInsertionCount, 0, "expected number of innerView's didInsertElement (post-scroll to 0)");301 assert.equal(innerViewDestroyCount, 0, "expected number of innerView's willDestroyElement (post-scroll to 0)");302});303test("recycling complex views with ReusableListItemView, handling empty slots at the end of the grid", function(assert){304 var content = generateContent(20),305 height = 150,306 rowHeight = 50,307 width = 100,308 elementWidth = 50,309 itemViewClass = ReusableListItemView.extend({310 innerViewClass: Ember.View.extend({311 didInsertElement: function(){312 innerViewInsertionCount++;313 },314 willDestroyElement: function(){315 innerViewDestroyCount++;316 }317 }),318 didInsertElement: function(){319 this._super();320 listItemViewInsertionCount++;321 },322 willDestroyElement: function(){323 this._super();324 listItemViewDestroyCount++;325 },326 template: compile("{{name}} {{#view view.innerViewClass}}{{/view}}")327 });328 var listViewInsertionCount, listViewDestroyCount,329 listItemViewInsertionCount, listItemViewDestroyCount,330 innerViewInsertionCount, innerViewDestroyCount;331 listViewInsertionCount = 0;332 listViewDestroyCount = 0;333 listItemViewInsertionCount = 0;334 listItemViewDestroyCount = 0;335 innerViewInsertionCount = 0;336 innerViewDestroyCount = 0;337 var view;338 Ember.run(this, function(){339 view = this.subject({340 content: content,341 height: height,342 rowHeight: rowHeight,343 width: width,344 elementWidth: elementWidth,345 itemViewClass: itemViewClass,346 scrollTop: 0,347 didInsertElement: function() {348 listViewInsertionCount++;349 },350 willDestroyElement: function() {351 listViewDestroyCount++;352 }353 });354 });355 assert.equal(listViewInsertionCount, 0, "expected number of listView's didInsertElement (pre-append)");356 assert.equal(listViewDestroyCount, 0, "expected number of listView's willDestroyElement (pre-append)");357 assert.equal(listItemViewInsertionCount, 0, "expected number of listItemView's didInsertElement (pre-append)");358 assert.equal(listItemViewDestroyCount, 0, "expected number of listItemView's willDestroyElement (pre-append)");359 assert.equal(innerViewInsertionCount, 0, "expected number of innerView's didInsertElement (pre-append)");360 assert.equal(innerViewDestroyCount, 0, "expected number of innerView's willDestroyElement (pre-append)");361 this.render();362 assert.equal(listViewInsertionCount, 1, "expected number of listView's didInsertElement (post-append)");363 assert.equal(listViewDestroyCount, 0, "expected number of listView's willDestroyElement (post-append)");364 assert.equal(listItemViewInsertionCount, 8, "expected number of listItemView's didInsertElement (post-append)");365 assert.equal(listItemViewDestroyCount, 0, "expected number of listItemView's didInsertElement (post-append)");366 assert.equal(innerViewInsertionCount, 8, "expected number of innerView's didInsertElement (post-append)");367 assert.equal(innerViewDestroyCount, 0, "expected number of innerView's didInsertElement (post-append)");368 assert.equal(this.$('.ember-list-item-view').length, 8, "The correct number of items were rendered (post-append)");369 assert.equal(this.$('.ember-list-item-view:visible').length, 8, "The number of items that are not hidden with display:none (post-append)");370 listItemViewInsertionCount = 0;371 listItemViewDestroyCount = 0;372 innerViewInsertionCount = 0;373 innerViewDestroyCount = 0;374 view.scrollTo(350);375 assert.equal(this.$('.ember-list-item-view').length, 8, "The correct number of items were rendered (post-scroll to 350)");376 assert.equal(this.$('.ember-list-item-view:visible').length, 8, "The number of items that are not hidden with display:none (post-scroll to 350)");377 assert.equal(listItemViewInsertionCount, 0, "expected number of listItemView's didInsertElement (post-scroll to 350)");378 assert.equal(listItemViewDestroyCount, 0, "expected number of listItemView's willDestroyElement (post-scroll to 350)");379 assert.equal(innerViewInsertionCount, 0, "expected number of innerView's didInsertElement (post-scroll to 350)");380 assert.equal(innerViewDestroyCount, 0, "expected number of innerView's willDestroyElement (post-scroll to 350)");381 listItemViewInsertionCount = 0;382 listItemViewDestroyCount = 0;383 innerViewInsertionCount = 0;384 innerViewDestroyCount = 0;385 Ember.run(function() {386 view.set('width', 150);387 });388 assert.equal(this.$('.ember-list-item-view').length, 12, "The correct number of items were rendered (post-expand to 3 columns)");389 assert.equal(listItemViewInsertionCount, 4, "expected number of listItemView's didInsertElement (post-expand to 3 columns)");390 assert.equal(listItemViewDestroyCount, 0, "expected number of listItemView's willDestroyElement (post-expand to 3 columns)");391 assert.equal(innerViewInsertionCount, 4, "expected number of innerView's didInsertElement (post-expand to 3 columns)");392 assert.equal(innerViewDestroyCount, 0, "expected number of innerView's willDestroyElement (post-expand to 3 columns)");393 assert.equal(this.$('.ember-list-item-view:visible').length, 12, "The number of items that are not hidden with display:none (post-expand to 3 columns)");...
ContentScriptManager.js
Source:ContentScriptManager.js
...263 // PVSCL:IFCOND(UserFilter, LINE)264 destroyUserFilter () {265 // Destroy current augmentation operations266 if (!_.isEmpty(window.abwa.userFilter)) {267 window.abwa.userFilter.destroy()268 }269 }270 // PVSCL:ENDCOND271 // PVSCL:IFCOND(MoodleReport, LINE)272 destroyMoodleReport () {273 // Destroy current augmentation operations274 if (!_.isEmpty(window.abwa.moodleReport)) {275 window.abwa.moodleReport.destroy()276 }277 }278 // PVSCL:ENDCOND279 // PVSCL:IFCOND(MoodleComment, LINE)280 destroyMoodleComment () {281 // Destroy current augmentation operations282 if (!_.isEmpty(window.abwa.moodleComment)) {283 window.abwa.moodleComment.destroy()284 }285 }286 // PVSCL:ENDCOND287 destroyContentAnnotator () {288 // Destroy current content annotator289 if (!_.isEmpty(window.abwa.contentAnnotator)) {290 window.abwa.contentAnnotator.destroy()291 }292 }293 destroyTagsManager () {294 if (!_.isEmpty(window.abwa.tagManager)) {295 window.abwa.tagManager.destroy()296 }297 }298 destroyAnnotatedContentManager () {299 if (window.abwa.annotatedContentManager) {300 window.abwa.annotatedContentManager.destroy()301 }302 }303 // PVSCL:IFCOND(MoodleURL, LINE)304 destroyRolesManager () {305 // Destroy current augmentation operations306 if (window.abwa.rolesManager) {307 window.abwa.rolesManager.destroy()308 }309 }310 destroyPreviousAssignments () {311 // Destroy current augmentation operations312 if (window.abwa.previousAssignments) {313 window.abwa.previousAssignments.destroy()314 }315 }316 // PVSCL:ENDCOND317 destroyToolset () {318 if (window.abwa.toolset) {319 window.abwa.toolset.destroy()320 }321 }322 destroy (callback) {323 console.debug('Destroying content script manager')324 this.destroyContentTypeManager(() => {325 this.destroyTagsManager()326 this.destroyContentAnnotator()327 // PVSCL:IFCOND(UserFilter, LINE)328 this.destroyUserFilter()329 // PVSCL:ENDCOND330 this.destroyToolset()331 // PVSCL:IFCOND(MoodleURL, LINE)332 this.destroyRolesManager()333 this.destroyPreviousAssignments()334 // PVSCL:ENDCOND335 // TODO Destroy groupSelector, roleManager,336 window.abwa.groupSelector.destroy(() => {337 window.abwa.sidebar.destroy(() => {338 this.destroyStorage(() => {339 this.status = ContentScriptManager.status.notInitialized340 console.debug('Correctly destroyed content script manager')341 if (_.isFunction(callback)) {342 callback()343 }344 })345 })346 })347 // PVSCL:IFCOND(Manual, LINE)348 document.removeEventListener(Events.groupChanged, this.events.groupChangedEvent)349 // PVSCL:ENDCOND350 })351 }352 loadContentTypeManager (callback) {353 window.abwa.contentTypeManager = new ContentTypeManager()354 window.abwa.contentTypeManager.init(() => {355 if (_.isFunction(callback)) {356 callback()357 }358 })359 }360 destroyContentTypeManager (callback) {361 if (window.abwa.contentTypeManager) {362 window.abwa.contentTypeManager.destroy(() => {363 if (_.isFunction(callback)) {364 callback()365 }366 })367 }368 }369 loadStorage (callback) {370 // PVSCL:IFCOND(Storage->pv:SelectedChildren()->pv:Size()=1, LINE)371 // PVSCL:IFCOND(Hypothesis, LINE)372 window.abwa.storageManager = new HypothesisClientManager()373 // PVSCL:ENDCOND374 // PVSCL:IFCOND(Local, LINE)375 window.abwa.storageManager = new LocalStorageManager()376 // PVSCL:ENDCOND377 window.abwa.storageManager.init((err) => {378 if (_.isFunction(callback)) {379 if (err) {380 callback(err)381 } else {382 callback()383 }384 }385 })386 // PVSCL:ELSECOND387 chrome.runtime.sendMessage({scope: 'storage', cmd: 'getSelectedStorage'}, ({storage}) => {388 if (storage === 'hypothesis') {389 // Hypothesis390 window.abwa.storageManager = new HypothesisClientManager()391 } else {392 // Local storage393 window.abwa.storageManager = new LocalStorageManager()394 }395 window.abwa.storageManager.init((err) => {396 if (_.isFunction(callback)) {397 if (err) {398 callback(err)399 } else {400 callback()401 }402 }403 })404 })405 // PVSCL:ENDCOND406 }407 destroyStorage (callback) {408 if (window.abwa.storageManager) {409 window.abwa.storageManager.destroy(callback)410 }411 }412}413ContentScriptManager.status = {414 initializing: 'initializing',415 initialized: 'initialized',416 notInitialized: 'notInitialized'417}...
DestroyMethodTests.js
Source:DestroyMethodTests.js
1describe("'destroy()' Method tests", function() {2 var testSlider;3 it("removes the extra DOM elements associated with a slider", function() {4 testSlider = new Slider("#testSlider1", {5 id: "destroyMethodTestSlider"6 });7 testSlider.destroy();8 var sliderParentElement = $("#testSlider1").parent('div.slider').length;9 var sliderChildrenElements = $("#testSlider1").siblings('div.slider-track, div.tooltip').length;10 expect(sliderParentElement).toBe(0);11 expect(sliderChildrenElements).toBe(0);12 });13 describe("unbinds all slider events", function() {14 var flag, evtName;15 beforeEach(function() {16 testSlider = new Slider("#testSlider1", {17 id: "destroyMethodTestSlider"18 });19 flag = false;20 });21 it("unbinds from 'slideStart' event", function() {22 evtName = 'slideStart';23 $("#destroyMethodTestSlider").on(evtName, function() {24 flag = true;25 });26 testSlider.destroy();27 $("#destroyMethodTestSlider").trigger(evtName);28 expect(flag).toBeFalsy();29 });30 it("unbinds from 'slide' event", function() {31 evtName = 'slide';32 $("#destroyMethodTestSlider").on(evtName, function() {33 flag = true;34 });35 testSlider.destroy();36 $("#destroyMethodTestSlider").trigger(evtName);37 expect(flag).toBeFalsy();38 });39 it("unbinds from 'slideStop' event", function() {40 evtName = 'slideStop';41 $("#destroyMethodTestSlider").on(evtName, function() {42 flag = true;43 });44 testSlider.destroy();45 $("#destroyMethodTestSlider").trigger(evtName);46 expect(flag).toBeFalsy();47 });48 it("unbinds from 'slideChange' event", function() {49 evtName = 'slideChange';50 $("#destroyMethodTestSlider").on(evtName, function() {51 flag = true;52 });53 testSlider.destroy();54 $("#destroyMethodTestSlider").trigger(evtName);55 expect(flag).toBeFalsy();56 });57 });58 describe("DOM event listener removal tests", function() {59 describe("When tooltips are always hidden for single value sliders", function() {60 beforeEach(function() {61 // Create slider62 testSlider = new Slider("#testSlider1", {63 id: "destroyMethodTestSlider",64 tooltip: "hide"65 });66 });67 it("does not try to remove 'focus' event listener from handle1", function() {68 // Set up spy on 'removeEventListener'69 spyOn(testSlider.handle1, "removeEventListener");70 // Destroy slider71 testSlider.destroy();72 // Assert73 expect(testSlider.handle1.removeEventListener).not.toHaveBeenCalledWith("focus", undefined, false);74 });75 it("does not try to remove 'blur' event listener from handle1", function() {76 // Set up spy on 'removeEventListener'77 spyOn(testSlider.handle1, "removeEventListener");78 // Destroy slider79 testSlider.destroy();80 // Assert81 expect(testSlider.handle1.removeEventListener).not.toHaveBeenCalledWith("blur", undefined, false);82 });83 it("does not try to remove 'mouseenter' event listener from slider", function() {84 // Set up spy on 'removeEventListener'85 spyOn(testSlider.sliderElem, "removeEventListener");86 // Destroy slider87 testSlider.destroy();88 // Assert89 expect(testSlider.sliderElem.removeEventListener).not.toHaveBeenCalledWith("mouseenter", undefined, false);90 });91 it("does not try to remove 'mouseleave' event listener from slider", function() {92 // Set up spy on 'removeEventListener'93 spyOn(testSlider.sliderElem, "removeEventListener");94 // Destroy slider95 testSlider.destroy();96 // Assert97 expect(testSlider.sliderElem.removeEventListener).not.toHaveBeenCalledWith("mouseleave", undefined, false);98 });99 });100 describe("When tooltips are always shown for single value sliders", function() {101 beforeEach(function() {102 // Create slider103 testSlider = new Slider("#testSlider1", {104 id: "destroyMethodTestSlider",105 tooltip: "always"106 });107 });108 it("does not try to remove 'focus' event listener from handle1 when tooltip is always shown for single handle sliders", function() {109 // Set up spy on 'removeEventListener'110 spyOn(testSlider.handle1, "removeEventListener");111 // Destroy slider112 testSlider.destroy();113 // Assert114 expect(testSlider.handle1.removeEventListener).not.toHaveBeenCalledWith("focus", undefined, false);115 });116 it("does not try to remove 'blur' event listener from handle1 when tooltip is always shown for single handle sliders", function() {117 // Set up spy on 'removeEventListener'118 spyOn(testSlider.handle1, "removeEventListener");119 // Destroy slider120 testSlider.destroy();121 // Assert122 expect(testSlider.handle1.removeEventListener).not.toHaveBeenCalledWith("blur", undefined, false);123 });124 it("does not try to remove 'mouseenter' event listener from slider is always shown for single handle slider", function() {125 // Set up spy on 'removeEventListener'126 spyOn(testSlider.handle1, "removeEventListener");127 // Destroy slider128 testSlider.destroy();129 // Assert130 expect(testSlider.handle1.removeEventListener).not.toHaveBeenCalledWith("mouseenter", undefined, false);131 });132 it("does not try to remove 'mouseleave' event listener from slider is always shown for single handle slider", function() {133 // Set up spy on 'removeEventListener'134 spyOn(testSlider.sliderElem, "removeEventListener");135 // Destroy slider136 testSlider.destroy();137 // Assert138 expect(testSlider.sliderElem.removeEventListener).not.toHaveBeenCalledWith("mouseleave", undefined, false);139 });140 });141 describe("When tooltips are always hidden for range sliders", function() {142 beforeEach(function() {143 // Create slider144 testSlider = new Slider("#testSlider1", {145 id: "destroyMethodTestSlider",146 tooltip: "always",147 value: [2,5]148 });149 });150 it("does not try to remove 'focus' event listener from handle1", function() {151 // Set up spy on 'removeEventListener'152 spyOn(testSlider.handle1, "removeEventListener");153 // Destroy slider154 testSlider.destroy();155 // Assert156 expect(testSlider.handle1.removeEventListener).not.toHaveBeenCalledWith("focus", undefined, false);157 });158 it("does not try to remove 'focus' event listener from handle2", function() {159 // Set up spy on 'removeEventListener'160 spyOn(testSlider.handle2, "removeEventListener");161 // Destroy slider162 testSlider.destroy();163 // Assert164 expect(testSlider.handle2.removeEventListener).not.toHaveBeenCalledWith("focus", undefined, false);165 });166 it("does not try to remove 'blur' event listener from handle1", function() {167 // Set up spy on 'removeEventListener'168 spyOn(testSlider.handle1, "removeEventListener");169 // Destroy slider170 testSlider.destroy();171 // Assert172 expect(testSlider.handle1.removeEventListener).not.toHaveBeenCalledWith("blur", undefined, false);173 });174 it("does not try to remove 'blur' event listener from handle2", function() {175 // Set up spy on 'removeEventListener'176 spyOn(testSlider.handle2, "removeEventListener");177 // Destroy slider178 testSlider.destroy();179 // Assert180 expect(testSlider.handle2.removeEventListener).not.toHaveBeenCalledWith("blur", undefined, false);181 });182 it("does not try to remove 'mouseenter' event listener from slider", function() {183 // Set up spy on 'removeEventListener'184 spyOn(testSlider.sliderElem, "removeEventListener");185 // Destroy slider186 testSlider.destroy();187 // Assert188 expect(testSlider.sliderElem.removeEventListener).not.toHaveBeenCalledWith("mouseenter", undefined, false);189 });190 it("does not try to remove 'mouseleave' event listener from slider", function() {191 // Set up spy on 'removeEventListener'192 spyOn(testSlider.sliderElem, "removeEventListener");193 // Destroy slider194 testSlider.destroy();195 // Assert196 expect(testSlider.sliderElem.removeEventListener).not.toHaveBeenCalledWith("mouseleave", undefined, false);197 });198 });199 describe("When tooltips are always shown for range sliders", function() {200 beforeEach(function() {201 // Create slider202 testSlider = new Slider("#testSlider1", {203 id: "destroyMethodTestSlider",204 tooltip: "always",205 value: [2,5]206 });207 });208 it("does not try to remove 'focus' event listener from handle1", function() {209 // Set up spy on 'removeEventListener'210 spyOn(testSlider.handle1, "removeEventListener");211 // Destroy slider212 testSlider.destroy();213 // Assert214 expect(testSlider.handle1.removeEventListener).not.toHaveBeenCalledWith("focus", undefined, false);215 });216 217 it("does not try to remove 'focus' event listener from handle2", function() {218 // Set up spy on 'removeEventListener'219 spyOn(testSlider.handle2, "removeEventListener");220 // Destroy slider221 testSlider.destroy();222 // Assert223 expect(testSlider.handle2.removeEventListener).not.toHaveBeenCalledWith("focus", undefined, false);224 });225 it("does not try to remove 'blur' event listener from handle1", function() {226 // Set up spy on 'removeEventListener'227 spyOn(testSlider.handle1, "removeEventListener");228 // Destroy slider229 testSlider.destroy();230 // Assert231 expect(testSlider.handle1.removeEventListener).not.toHaveBeenCalledWith("blur", undefined, false);232 });233 234 it("does not try to remove 'blur' event listener from handle1 and handle2", function() {235 // Set up spy on 'removeEventListener'236 spyOn(testSlider.handle2, "removeEventListener");237 // Destroy slider238 testSlider.destroy();239 // Assert240 expect(testSlider.handle2.removeEventListener).not.toHaveBeenCalledWith("blur", undefined, false);241 });242 it("does not try to remove 'mouseenter' event listener from slider", function() {243 // Set up spy on 'removeEventListener'244 spyOn(testSlider.sliderElem, "removeEventListener");245 // Destroy slider246 testSlider.destroy();247 // Assert248 expect(testSlider.sliderElem.removeEventListener).not.toHaveBeenCalledWith("mouseenter", undefined, false);249 });250 it("does not try to remove 'mouseleave' event listener from slider", function() {251 // Set up spy on 'removeEventListener'252 spyOn(testSlider.sliderElem, "removeEventListener");253 // Destroy slider254 testSlider.destroy();255 // Assert256 expect(testSlider.sliderElem.removeEventListener).not.toHaveBeenCalledWith("mouseleave", undefined, false);257 });258 });259 });...
Destroy.js
Source:Destroy.js
...51 }52 }53 if (this.input)54 {55 this.input.destroy();56 }57 if (this.animations)58 {59 this.animations.destroy();60 }61 if (this.body)62 {63 this.body.destroy();64 }65 if (this.events)66 {67 this.events.destroy();68 }69 var i = this.children.length;70 if (destroyChildren)71 {72 while (i--)73 {74 this.children[i].destroy(destroyChildren);75 }76 }77 else78 {79 while (i--)80 {81 this.removeChild(this.children[i]);82 }83 }84 if (this._crop)85 {86 this._crop = null;87 }88 if (this._frame)89 {90 this._frame = null;91 }92 if (Phaser.Video && this.key instanceof Phaser.Video)93 {94 this.key.onChangeSource.remove(this.resizeFrame, this);95 }96 if (Phaser.BitmapText && this._glyphs)97 {98 this._glyphs = [];99 }100 this.alive = false;101 this.exists = false;102 this.visible = false;103 this.filters = null;104 this.mask = null;105 this.game = null;106 // In case Pixi is still going to try and render it even though destroyed107 this.renderable = false;108 if (this.transformCallback)109 {110 this.transformCallback = null;111 this.transformCallbackContext = null;112 }113 // Pixi level DisplayObject destroy114 this.hitArea = null;115 this.parent = null;116 this.stage = null;117 this.worldTransform = null;118 this.filterArea = null;119 this._bounds = null;120 this._currentBounds = null;121 this._mask = null;122 this._destroyCachedSprite();123 // Texture?124 if (destroyTexture)125 {126 this.texture.destroy(true);127 }128 this.destroyPhase = false;129 this.pendingDestroy = false;130 }...
Destroyable.js
Source:Destroyable.js
...11 // summary:12 // Mixin to track handles and release them when instance is destroyed.13 // description:14 // Call this.own(...) on list of handles (returned from dojo/aspect, dojo/on,15 // dojo/Stateful::watch, or any class (including widgets) with a destroyRecursive() or destroy() method.16 // Then call destroy() later to destroy this instance and release the resources.1718 destroy: function(/*Boolean*/ preserveDom){19 // summary:20 // Destroy this class, releasing any resources registered via own().21 this._destroyed = true;22 },2324 own: function(){25 // summary:26 // Track specified handles and remove/destroy them when this instance is destroyed, unless they were27 // already removed/destroyed manually.28 // tags:29 // protected30 // returns:31 // The array of specified handles, so you can do for example:32 // | var handle = this.own(on(...))[0];3334 var cleanupMethods = [35 "destroyRecursive",36 "destroy",37 "remove"38 ];3940 array.forEach(arguments, function(handle){41 // When this.destroy() is called, destroy handle. Since I'm using aspect.before(),42 // the handle will be destroyed before a subclass's destroy() method starts running, before it calls43 // this.inherited() or even if it doesn't call this.inherited() at all. If that's an issue, make an44 // onDestroy() method and connect to that instead.45 var destroyMethodName;46 var odh = aspect.before(this, "destroy", function (preserveDom){47 handle[destroyMethodName](preserveDom);48 });4950 // Callback for when handle is manually destroyed.51 var hdhs = [];52 function onManualDestroy(){53 odh.remove();54 array.forEach(hdhs, function(hdh){55 hdh.remove();56 });57 }5859 // Setup listeners for manual destroy of handle.60 // Also computes destroyMethodName, used in listener above.61 if(handle.then){62 // Special path for Promises. Detect when Promise is resolved, rejected, or63 // canceled (nb: cancelling a Promise causes it to be rejected).64 destroyMethodName = "cancel";65 handle.then(onManualDestroy, onManualDestroy);66 }else{67 // Path for other handles. Just use AOP to detect when handle is manually destroyed.68 array.forEach(cleanupMethods, function(cleanupMethod){69 if(typeof handle[cleanupMethod] === "function"){70 if(!destroyMethodName){71 // Use first matching method name in above listener (prefer destroyRecursive() to destroy())72 destroyMethodName = cleanupMethod;73 }74 hdhs.push(aspect.after(handle, cleanupMethod, onManualDestroy, true));75 }76 });77 }78 }, this);7980 return arguments; // handle81 }82 });
...
Destroyable.js.consoleStripped.js
Source:Destroyable.js.consoleStripped.js
...9 // summary:10 // Mixin to track handles and release them when instance is destroyed.11 // description:12 // Call this.own(...) on list of handles (returned from dojo/aspect, dojo/on,13 // dojo/Stateful::watch, or any class (including widgets) with a destroyRecursive() or destroy() method.14 // Then call destroy() later to destroy this instance and release the resources.15 destroy: function(/*Boolean*/ preserveDom){16 // summary:17 // Destroy this class, releasing any resources registered via own().18 this._destroyed = true;19 },20 own: function(){21 // summary:22 // Track specified handles and remove/destroy them when this instance is destroyed, unless they were23 // already removed/destroyed manually.24 // tags:25 // protected26 // returns:27 // The array of specified handles, so you can do for example:28 // | var handle = this.own(on(...))[0];29 var cleanupMethods = [30 "destroyRecursive",31 "destroy",32 "remove"33 ];34 array.forEach(arguments, function(handle){35 // When this.destroy() is called, destroy handle. Since I'm using aspect.before(),36 // the handle will be destroyed before a subclass's destroy() method starts running, before it calls37 // this.inherited() or even if it doesn't call this.inherited() at all. If that's an issue, make an38 // onDestroy() method and connect to that instead.39 var destroyMethodName;40 var odh = aspect.before(this, "destroy", function (preserveDom){41 handle[destroyMethodName](preserveDom);42 });43 // Callback for when handle is manually destroyed.44 var hdhs = [];45 function onManualDestroy(){46 odh.remove();47 array.forEach(hdhs, function(hdh){48 hdh.remove();49 });50 }51 // Setup listeners for manual destroy of handle.52 // Also computes destroyMethodName, used in listener above.53 if(handle.then){54 // Special path for Promises. Detect when Promise is resolved, rejected, or55 // canceled (nb: cancelling a Promise causes it to be rejected).56 destroyMethodName = "cancel";57 handle.then(onManualDestroy, onManualDestroy);58 }else{59 // Path for other handles. Just use AOP to detect when handle is manually destroyed.60 array.forEach(cleanupMethods, function(cleanupMethod){61 if(typeof handle[cleanupMethod] === "function"){62 if(!destroyMethodName){63 // Use first matching method name in above listener (prefer destroyRecursive() to destroy())64 destroyMethodName = cleanupMethod;65 }66 hdhs.push(aspect.after(handle, cleanupMethod, onManualDestroy, true));67 }68 });69 }70 }, this);71 return arguments; // handle72 }73 });...
Destroyable.js.uncompressed.js
Source:Destroyable.js.uncompressed.js
...9 // summary:10 // Mixin to track handles and release them when instance is destroyed.11 // description:12 // Call this.own(...) on list of handles (returned from dojo/aspect, dojo/on,13 // dojo/Stateful::watch, or any class (including widgets) with a destroyRecursive() or destroy() method.14 // Then call destroy() later to destroy this instance and release the resources.15 destroy: function(/*Boolean*/ preserveDom){16 // summary:17 // Destroy this class, releasing any resources registered via own().18 this._destroyed = true;19 },20 own: function(){21 // summary:22 // Track specified handles and remove/destroy them when this instance is destroyed, unless they were23 // already removed/destroyed manually.24 // tags:25 // protected26 // returns:27 // The array of specified handles, so you can do for example:28 // | var handle = this.own(on(...))[0];29 var cleanupMethods = [30 "destroyRecursive",31 "destroy",32 "remove"33 ];34 array.forEach(arguments, function(handle){35 // When this.destroy() is called, destroy handle. Since I'm using aspect.before(),36 // the handle will be destroyed before a subclass's destroy() method starts running, before it calls37 // this.inherited() or even if it doesn't call this.inherited() at all. If that's an issue, make an38 // onDestroy() method and connect to that instead.39 var destroyMethodName;40 var odh = aspect.before(this, "destroy", function (preserveDom){41 handle[destroyMethodName](preserveDom);42 });43 // Callback for when handle is manually destroyed.44 var hdhs = [];45 function onManualDestroy(){46 odh.remove();47 array.forEach(hdhs, function(hdh){48 hdh.remove();49 });50 }51 // Setup listeners for manual destroy of handle.52 // Also computes destroyMethodName, used in listener above.53 if(handle.then){54 // Special path for Promises. Detect when Promise is resolved, rejected, or55 // canceled (nb: cancelling a Promise causes it to be rejected).56 destroyMethodName = "cancel";57 handle.then(onManualDestroy, onManualDestroy);58 }else{59 // Path for other handles. Just use AOP to detect when handle is manually destroyed.60 array.forEach(cleanupMethods, function(cleanupMethod){61 if(typeof handle[cleanupMethod] === "function"){62 if(!destroyMethodName){63 // Use first matching method name in above listener (prefer destroyRecursive() to destroy())64 destroyMethodName = cleanupMethod;65 }66 hdhs.push(aspect.after(handle, cleanupMethod, onManualDestroy, true));67 }68 });69 }70 }, this);71 return arguments; // handle72 }73 });...
DestroyOnHit.js
Source:DestroyOnHit.js
1#pragma strict2#pragma implicit3#pragma downcast4class DestroyOnHit extends MonoBehaviour5{6 public var hitsToDestroy : int = 1;7 public var destructionParticles : GameObject;8 public var destroyOnExplosion : boolean = true;9 public var destroyParent : boolean = true;10 11 function Start()12 {13 gameObject.layer = 11;14 }15 16 function Destruct()17 {18 if(destroyOnExplosion)19 {20 DestroyObject();21 }22 }23 24 function Hit(hit : RaycastHit)25 {26 hitsToDestroy--;27 28 if(hitsToDestroy <= 0)29 {30 DestroyObject();31 }32 }33 34 function DestroyObject()35 {36 if(destructionParticles != null)37 {38 GameObject.Instantiate(destructionParticles, transform.position, Quaternion.identity);39 }40 41 if(destroyParent)42 {43 if(transform.parent != null)44 {45 Destroy(transform.parent.gameObject);46 }47 else48 {49 Destroy(gameObject);50 }51 }52 else53 {54 Destroy(gameObject);55 }56 }...
Using AI Code Generation
1var request = require('request');2request.del(url, function(err, res, body) {3 if (err) {4 console.log(err);5 } else {6 console.log(body);7 }8});
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!