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 #include "chrome/renderer/web_apps.h" | 5 #include "chrome/renderer/web_apps.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/json/json_reader.h" | 10 #include "base/json/json_reader.h" |
(...skipping 22 matching lines...) Expand all Loading... |
33 using blink::WebFrame; | 33 using blink::WebFrame; |
34 using blink::WebNode; | 34 using blink::WebNode; |
35 using blink::WebNodeList; | 35 using blink::WebNodeList; |
36 using blink::WebString; | 36 using blink::WebString; |
37 | 37 |
38 namespace web_apps { | 38 namespace web_apps { |
39 namespace { | 39 namespace { |
40 | 40 |
41 // Sizes a single size (the width or height) from a 'sizes' attribute. A size | 41 // Sizes a single size (the width or height) from a 'sizes' attribute. A size |
42 // matches must match the following regex: [1-9][0-9]*. | 42 // matches must match the following regex: [1-9][0-9]*. |
43 int ParseSingleIconSize(const string16& text) { | 43 int ParseSingleIconSize(const base::string16& text) { |
44 // Size must not start with 0, and be between 0 and 9. | 44 // Size must not start with 0, and be between 0 and 9. |
45 if (text.empty() || !(text[0] >= L'1' && text[0] <= L'9')) | 45 if (text.empty() || !(text[0] >= L'1' && text[0] <= L'9')) |
46 return 0; | 46 return 0; |
47 | 47 |
48 // Make sure all chars are from 0-9. | 48 // Make sure all chars are from 0-9. |
49 for (size_t i = 1; i < text.length(); ++i) { | 49 for (size_t i = 1; i < text.length(); ++i) { |
50 if (!(text[i] >= L'0' && text[i] <= L'9')) | 50 if (!(text[i] >= L'0' && text[i] <= L'9')) |
51 return 0; | 51 return 0; |
52 } | 52 } |
53 int output; | 53 int output; |
54 if (!base::StringToInt(text, &output)) | 54 if (!base::StringToInt(text, &output)) |
55 return 0; | 55 return 0; |
56 return output; | 56 return output; |
57 } | 57 } |
58 | 58 |
59 // Parses an icon size. An icon size must match the following regex: | 59 // Parses an icon size. An icon size must match the following regex: |
60 // [1-9][0-9]*x[1-9][0-9]*. | 60 // [1-9][0-9]*x[1-9][0-9]*. |
61 // If the input couldn't be parsed, a size with a width/height == 0 is returned. | 61 // If the input couldn't be parsed, a size with a width/height == 0 is returned. |
62 gfx::Size ParseIconSize(const string16& text) { | 62 gfx::Size ParseIconSize(const base::string16& text) { |
63 std::vector<string16> sizes; | 63 std::vector<base::string16> sizes; |
64 base::SplitStringDontTrim(text, L'x', &sizes); | 64 base::SplitStringDontTrim(text, L'x', &sizes); |
65 if (sizes.size() != 2) | 65 if (sizes.size() != 2) |
66 return gfx::Size(); | 66 return gfx::Size(); |
67 | 67 |
68 return gfx::Size(ParseSingleIconSize(sizes[0]), | 68 return gfx::Size(ParseSingleIconSize(sizes[0]), |
69 ParseSingleIconSize(sizes[1])); | 69 ParseSingleIconSize(sizes[1])); |
70 } | 70 } |
71 | 71 |
72 void AddInstallIcon(const WebElement& link, | 72 void AddInstallIcon(const WebElement& link, |
73 std::vector<WebApplicationInfo::IconInfo>* icons) { | 73 std::vector<WebApplicationInfo::IconInfo>* icons) { |
(...skipping 15 matching lines...) Expand all Loading... |
89 icon_sizes.size() == 1) { | 89 icon_sizes.size() == 1) { |
90 icon_info.width = icon_sizes[0].width(); | 90 icon_info.width = icon_sizes[0].width(); |
91 icon_info.height = icon_sizes[0].height(); | 91 icon_info.height = icon_sizes[0].height(); |
92 } | 92 } |
93 icon_info.url = url; | 93 icon_info.url = url; |
94 icons->push_back(icon_info); | 94 icons->push_back(icon_info); |
95 } | 95 } |
96 | 96 |
97 } // namespace | 97 } // namespace |
98 | 98 |
99 bool ParseIconSizes(const string16& text, | 99 bool ParseIconSizes(const base::string16& text, |
100 std::vector<gfx::Size>* sizes, | 100 std::vector<gfx::Size>* sizes, |
101 bool* is_any) { | 101 bool* is_any) { |
102 *is_any = false; | 102 *is_any = false; |
103 std::vector<string16> size_strings; | 103 std::vector<base::string16> size_strings; |
104 base::SplitStringAlongWhitespace(text, &size_strings); | 104 base::SplitStringAlongWhitespace(text, &size_strings); |
105 for (size_t i = 0; i < size_strings.size(); ++i) { | 105 for (size_t i = 0; i < size_strings.size(); ++i) { |
106 if (EqualsASCII(size_strings[i], "any")) { | 106 if (EqualsASCII(size_strings[i], "any")) { |
107 *is_any = true; | 107 *is_any = true; |
108 } else { | 108 } else { |
109 gfx::Size size = ParseIconSize(size_strings[i]); | 109 gfx::Size size = ParseIconSize(size_strings[i]); |
110 if (size.width() <= 0 || size.height() <= 0) | 110 if (size.width() <= 0 || size.height() <= 0) |
111 return false; // Bogus size. | 111 return false; // Bogus size. |
112 sizes->push_back(size); | 112 sizes->push_back(size); |
113 } | 113 } |
114 } | 114 } |
115 if (*is_any && !sizes->empty()) { | 115 if (*is_any && !sizes->empty()) { |
116 // If is_any is true, it must occur by itself. | 116 // If is_any is true, it must occur by itself. |
117 return false; | 117 return false; |
118 } | 118 } |
119 return (*is_any || !sizes->empty()); | 119 return (*is_any || !sizes->empty()); |
120 } | 120 } |
121 | 121 |
122 bool ParseWebAppFromWebDocument(WebFrame* frame, | 122 bool ParseWebAppFromWebDocument(WebFrame* frame, |
123 WebApplicationInfo* app_info, | 123 WebApplicationInfo* app_info, |
124 string16* error) { | 124 base::string16* error) { |
125 WebDocument document = frame->document(); | 125 WebDocument document = frame->document(); |
126 if (document.isNull()) | 126 if (document.isNull()) |
127 return true; | 127 return true; |
128 | 128 |
129 WebElement head = document.head(); | 129 WebElement head = document.head(); |
130 if (head.isNull()) | 130 if (head.isNull()) |
131 return true; | 131 return true; |
132 | 132 |
133 GURL document_url = document.url(); | 133 GURL document_url = document.url(); |
134 WebNodeList children = head.childNodes(); | 134 WebNodeList children = head.childNodes(); |
(...skipping 27 matching lines...) Expand all Loading... |
162 if (!app_info->app_url.is_valid()) | 162 if (!app_info->app_url.is_valid()) |
163 app_info->app_url = GURL(); | 163 app_info->app_url = GURL(); |
164 } | 164 } |
165 } | 165 } |
166 } | 166 } |
167 | 167 |
168 return true; | 168 return true; |
169 } | 169 } |
170 | 170 |
171 } // namespace web_apps | 171 } // namespace web_apps |
OLD | NEW |