| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // NOTE: based loosely on mozilla's nsDataChannel.cpp | 5 // NOTE: based loosely on mozilla's nsDataChannel.cpp |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "net/base/data_url.h" | 9 #include "net/base/data_url.h" |
| 10 | 10 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 | 29 |
| 30 std::string::const_iterator after_colon = std::find(begin, end, ':'); | 30 std::string::const_iterator after_colon = std::find(begin, end, ':'); |
| 31 if (after_colon == end) | 31 if (after_colon == end) |
| 32 return false; | 32 return false; |
| 33 ++after_colon; | 33 ++after_colon; |
| 34 | 34 |
| 35 std::string::const_iterator comma = std::find(after_colon, end, ','); | 35 std::string::const_iterator comma = std::find(after_colon, end, ','); |
| 36 if (comma == end) | 36 if (comma == end) |
| 37 return false; | 37 return false; |
| 38 | 38 |
| 39 std::vector<std::string> meta_data; | 39 std::vector<std::string> meta_data = |
| 40 std::string unparsed_meta_data(after_colon, comma); | 40 base::SplitString(base::StringPiece(after_colon, comma), ";", |
| 41 base::SplitString(unparsed_meta_data, ';', &meta_data); | 41 base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); |
| 42 | 42 |
| 43 std::vector<std::string>::iterator iter = meta_data.begin(); | 43 std::vector<std::string>::iterator iter = meta_data.begin(); |
| 44 if (iter != meta_data.end()) { | 44 if (iter != meta_data.end()) { |
| 45 mime_type->swap(*iter); | 45 mime_type->swap(*iter); |
| 46 base::StringToLowerASCII(mime_type); | 46 base::StringToLowerASCII(mime_type); |
| 47 ++iter; | 47 ++iter; |
| 48 } | 48 } |
| 49 | 49 |
| 50 static const char kBase64Tag[] = "base64"; | 50 static const char kBase64Tag[] = "base64"; |
| 51 static const char kCharsetTag[] = "charset="; | 51 static const char kCharsetTag[] = "charset="; |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 129 temp_data.resize(length + padding_needed, '='); | 129 temp_data.resize(length + padding_needed, '='); |
| 130 } | 130 } |
| 131 return base::Base64Decode(temp_data, data); | 131 return base::Base64Decode(temp_data, data); |
| 132 } | 132 } |
| 133 | 133 |
| 134 temp_data.swap(*data); | 134 temp_data.swap(*data); |
| 135 return true; | 135 return true; |
| 136 } | 136 } |
| 137 | 137 |
| 138 } // namespace net | 138 } // namespace net |
| OLD | NEW |