Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 function IteratorIdentity() {
6 return this;
7 }
9 var LegacyIteratorWrapperMap = new std_WeakMap();
11 function LegacyIteratorNext(arg) {
12 var iter = callFunction(std_WeakMap_get, LegacyIteratorWrapperMap, this);
13 try {
14 return { value: iter.next(arg), done: false };
15 } catch (e) {
16 if (e instanceof std_StopIteration)
17 return { value: undefined, done: true };
18 throw e;
19 }
20 }
22 function LegacyIteratorThrow(exn) {
23 var iter = callFunction(std_WeakMap_get, LegacyIteratorWrapperMap, this);
24 try {
25 return { value: iter.throw(exn), done: false };
26 } catch (e) {
27 if (e instanceof std_StopIteration)
28 return { value: undefined, done: true };
29 throw e;
30 }
31 }
33 function LegacyIterator(iter) {
34 callFunction(std_WeakMap_set, LegacyIteratorWrapperMap, this, iter);
35 }
37 function LegacyGeneratorIterator(iter) {
38 callFunction(std_WeakMap_set, LegacyIteratorWrapperMap, this, iter);
39 }
41 var LegacyIteratorsInitialized = std_Object_create(null);
43 function InitLegacyIterators() {
44 var props = std_Object_create(null);
46 props.next = std_Object_create(null);
47 props.next.value = LegacyIteratorNext;
48 props.next.enumerable = false;
49 props.next.configurable = true;
50 props.next.writable = true;
52 props[std_iterator] = std_Object_create(null);
53 props[std_iterator].value = IteratorIdentity;
54 props[std_iterator].enumerable = false;
55 props[std_iterator].configurable = true;
56 props[std_iterator].writable = true;
58 var LegacyIteratorProto = std_Object_create(GetIteratorPrototype(), props);
59 MakeConstructible(LegacyIterator, LegacyIteratorProto);
61 props.throw = std_Object_create(null);
62 props.throw.value = LegacyIteratorThrow;
63 props.throw.enumerable = false;
64 props.throw.configurable = true;
65 props.throw.writable = true;
67 var LegacyGeneratorIteratorProto = std_Object_create(GetIteratorPrototype(), props);
68 MakeConstructible(LegacyGeneratorIterator, LegacyGeneratorIteratorProto);
70 LegacyIteratorsInitialized.initialized = true;
71 }
73 function NewLegacyIterator(iter, wrapper) {
74 if (!LegacyIteratorsInitialized.initialized)
75 InitLegacyIterators();
77 return new wrapper(iter);
78 }
80 function LegacyIteratorShim() {
81 return NewLegacyIterator(ToObject(this), LegacyIterator);
82 }
84 function LegacyGeneratorIteratorShim() {
85 return NewLegacyIterator(ToObject(this), LegacyGeneratorIterator);
86 }