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

Side by Side Diff: Source/wtf/text/TextCodecBase64.cpp

Issue 143943017: Added Base64 support in TextEncoder and TextDecoder. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 11 months 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2003, 2006 Apple Computer, Inc. All rights reserved. 2 * Copyright (C) 2004, 2006, 2008, 2011 Apple Inc. All rights reserved.
3 * Copyright (C) 2005 Nokia. All rights reserved.
4 * 3 *
5 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
7 * are met: 6 * are met:
8 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
13 * 12 *
14 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */ 24 */
26 25
27 #include "config.h" 26 #include "config.h"
28 #include "platform/geometry/FloatSize.h" 27 #include "wtf/text/TextCodecBase64.h"
29 28
30 #include "platform/FloatConversion.h" 29 #include "wtf/text/Base64.h"
31 #include "platform/geometry/IntSize.h" 30 #include "wtf/text/CString.h"
32 #include "platform/geometry/LayoutSize.h" 31 #include "wtf/text/StringBuffer.h"
jsbell 2014/01/24 22:15:05 Is this include needed?
33 #include <limits> 32 #include "wtf/unicode/CharacterNames.h"
jsbell 2014/01/24 22:15:05 Is this include needed?
34 #include <math.h>
35 33
34 using namespace WTF;
36 using namespace std; 35 using namespace std;
37 36
38 namespace WebCore { 37 namespace WTF {
39 38
40 FloatSize::FloatSize(const IntSize& size) : m_width(size.width()), m_height(size .height()) 39 PassOwnPtr<TextCodec> TextCodecBase64::create(const TextEncoding&, const void*)
41 { 40 {
41 return adoptPtr(new TextCodecBase64);
42 } 42 }
43 43
44 FloatSize::FloatSize(const LayoutSize& size) : m_width(size.width()), m_height(s ize.height()) 44 void TextCodecBase64::registerEncodingNames(EncodingNameRegistrar registrar)
jsbell 2014/01/24 22:15:05 Does this registration cause base64 to show up in
45 { 45 {
46 registrar("Base64", "Base64");
47 registrar("base64", "Base64");
46 } 48 }
47 49
48 float FloatSize::diagonalLength() const 50 void TextCodecBase64::registerCodecs(TextCodecRegistrar registrar)
49 { 51 {
50 return sqrtf(diagonalLengthSquared()); 52 registrar("Base64", create, 0);
51 } 53 }
52 54
53 bool FloatSize::isZero() const 55 String TextCodecBase64::decode(const char* bytes, size_t length, bool flush, boo l stopOnError, bool& sawError)
jsbell 2014/01/24 22:15:05 Is streaming handled here? It looks like flush is
54 { 56 {
55 return fabs(m_width) < numeric_limits<float>::epsilon() && fabs(m_height) < numeric_limits<float>::epsilon(); 57 return base64Encode(bytes, length);
56 } 58 }
57 59
58 bool FloatSize::isExpressibleAsIntSize() const 60 CString TextCodecBase64::encode(const UChar* characters, size_t length, Unencoda bleHandling)
jsbell 2014/01/24 22:15:05 It doesn't look like the Codec API handles flushin
59 { 61 {
60 return isWithinIntRange(m_width) && isWithinIntRange(m_height); 62 Vector<char> output;
63 base64Decode(characters, length, output);
64 return CString(output.data(), output.size());
61 } 65 }
62 66
63 FloatSize FloatSize::narrowPrecision(double width, double height) 67 CString TextCodecBase64::encode(const LChar* characters, size_t length, Unencoda bleHandling)
64 { 68 {
65 return FloatSize(narrowPrecisionToFloat(width), narrowPrecisionToFloat(heigh t)); 69 Vector<char> output;
70 base64Decode(reinterpret_cast<const char*>(characters), length, output);
71 return CString(output.data(), output.size());
66 } 72 }
67 73
68 } 74 } // namespace WTF
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698