Index: Source/core/frame/WindowBase64.js |
diff --git a/Source/core/svg/SVGLengthListTearOff.h b/Source/core/frame/WindowBase64.js |
similarity index 56% |
copy from Source/core/svg/SVGLengthListTearOff.h |
copy to Source/core/frame/WindowBase64.js |
index b28dc8c94e6171147890fb606b6d1c0e53bed86f..649dc26feb5aea12a7afb259c2ba2310051c270c 100644 |
--- a/Source/core/svg/SVGLengthListTearOff.h |
+++ b/Source/core/frame/WindowBase64.js |
@@ -28,31 +28,51 @@ |
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
-#ifndef SVGLengthListTearOff_h |
-#define SVGLengthListTearOff_h |
+"use strict"; |
-#include "core/svg/SVGLengthList.h" |
-#include "core/svg/properties/NewSVGListPropertyTearOffHelper.h" |
+installClass("WindowBase64", function() { |
+ // FIXME: This base64 encoding/decoding implementation is just copied from http://tociyuki.flop.jp/archive/base64.js. |
+ // Fix the implementation per the spec. |
+ var base64list = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; |
-namespace WebCore { |
- |
-class SVGLengthListTearOff FINAL : |
- public NewSVGListPropertyTearOffHelper<SVGLengthListTearOff, SVGLengthList>, |
- public ScriptWrappable { |
-public: |
- static PassRefPtr<SVGLengthListTearOff> create(PassRefPtr<SVGLengthList> target, SVGElement* contextElement, PropertyIsAnimValType propertyIsAnimVal, const QualifiedName& attributeName = nullQName()) |
- { |
- return adoptRef(new SVGLengthListTearOff(target, contextElement, propertyIsAnimVal, attributeName)); |
+ function atob(str) { |
+ console.log(this === window); |
+ var t = '', p = -6, a = 0, i = 0, v = 0, c; |
+ while (i < str.length || p > -6) { |
+ if (p < 0) { |
+ if (i < str.length) { |
+ c = str.charCodeAt(i++); |
+ v += 8; |
+ } else { |
+ c = 0; |
+ } |
+ a = ((a & 255) << 8) | (c & 255); |
+ p += 8; |
+ } |
+ t += base64list.charAt(v > 0 ? (a >> p) & 63 : 64); |
+ p -= 6; |
+ v -= 6; |
} |
+ return t; |
+ } |
-private: |
- SVGLengthListTearOff(PassRefPtr<SVGLengthList> target, SVGElement* contextElement, PropertyIsAnimValType propertyIsAnimVal, const QualifiedName& attributeName = nullQName()) |
- : NewSVGListPropertyTearOffHelper<SVGLengthListTearOff, SVGLengthList>(target, contextElement, propertyIsAnimVal, attributeName) |
- { |
- ScriptWrappable::init(this); |
+ function btoa(str) { |
+ console.log(this === window); |
+ var t = '', p = -8, a = 0, c, d; |
+ for(var i = 0; i < str.length; i++) { |
+ if ((c = base64list.indexOf(str.charAt(i))) < 0) |
+ continue; |
+ a = (a << 6) | (c & 63); |
+ if ((p += 6) >= 0) { |
+ d = (a >> p) & 255; |
+ if (c != 64) |
+ t += String.fromCharCode(d); |
+ a &= 63; |
+ p -= 8; |
+ } |
} |
-}; |
- |
-} // namespace WebCore |
+ return t; |
+ } |
-#endif // SVGLengthListTearOff_h_ |
+ return { atob: atob, btoa: btoa }; |
+}); |