OLD | NEW |
| (Empty) |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #include "testing/gtest/include/gtest/gtest.h" | |
6 | |
7 #include <string> | |
8 #include <vector> | |
9 | |
10 #include "base/strings/string16.h" | |
11 #include "base/strings/string_util.h" | |
12 #include "base/strings/utf_string_conversions.h" | |
13 #include "chrome/browser/bookmarks/imported_bookmark_entry.h" | |
14 #include "chrome/browser/first_run/first_run.h" | |
15 #include "chrome/browser/first_run/first_run_internal.h" | |
16 #include "chrome/browser/importer/toolbar_importer.h" | |
17 #include "googleurl/src/gurl.h" | |
18 #include "third_party/libxml/chromium/libxml_utils.h" | |
19 | |
20 // See http://crbug.com/11838 | |
21 TEST(Toolbar5ImporterTest, BookmarkParse) { | |
22 static const string16 kTitle = ASCIIToUTF16("MyTitle"); | |
23 static const char kUrl[] = "http://www.google.com/"; | |
24 static const string16 kFolder = ASCIIToUTF16("Google"); | |
25 static const string16 kFolder2 = ASCIIToUTF16("Homepage"); | |
26 static const string16 kFolderArray[3] = { | |
27 ASCIIToUTF16("Google"), | |
28 ASCIIToUTF16("Search"), | |
29 ASCIIToUTF16("Page") | |
30 }; | |
31 static const string16 kOtherTitle = ASCIIToUTF16("MyOtherTitle"); | |
32 static const char* kOtherUrl = "http://www.google.com/mail"; | |
33 static const string16 kOtherFolder = ASCIIToUTF16("Mail"); | |
34 | |
35 static const string16 kBookmarkGroupTitle = ASCIIToUTF16("BookmarkGroupTitle"); | |
36 | |
37 // Since the following is very dense to read I enumerate the test cases here. | |
38 // 1. Correct bookmark structure with one label. | |
39 // 2. Correct bookmark structure with no labels. | |
40 // 3. Correct bookmark structure with two labels. | |
41 // 4. Correct bookmark structure with a folder->label translation by toolbar. | |
42 // 5. Correct bookmark structure with no favicon. | |
43 // 6. Two correct bookmarks. | |
44 // The following are error cases by removing sections from the xml: | |
45 // 7. Empty string passed as xml. | |
46 // 8. No <bookmarks> section in the xml. | |
47 // 9. No <bookmark> section below the <bookmarks> section. | |
48 // 10. No <title> in a <bookmark> section. | |
49 // 11. No <url> in a <bookmark> section. | |
50 // 12. No <timestamp> in a <bookmark> section. | |
51 // 13. No <labels> in a <bookmark> section. | |
52 static const char* kGoodBookmark = | |
53 "<?xml version=\"1.0\" ?> <xml_api_reply version=\"1\"> <bookmarks>" | |
54 " <bookmark> " | |
55 "<title>MyTitle</title> " | |
56 "<url>http://www.google.com/</url> " | |
57 "<timestamp>1153328691085181</timestamp> " | |
58 "<id>N123nasdf239</id> <notebook_id>Bxxxxxxx</notebook_id> " | |
59 "<section_id>Sxxxxxx</section_id> <has_highlight>0</has_highlight>" | |
60 "<labels> <label>Google</label> </labels> " | |
61 "<attributes> " | |
62 "<attribute> " | |
63 "<name>favicon_url</name> <value>http://www.google.com/favicon.ico</value> " | |
64 "</attribute> " | |
65 "<attribute> " | |
66 "<name>favicon_timestamp</name> <value>1153328653</value> " | |
67 "</attribute> " | |
68 "<attribute> <name>notebook_name</name> <value>My notebook 0</value> " | |
69 "</attribute> " | |
70 "<attribute> <name>section_name</name> <value>My section 0 " | |
71 "</value> </attribute> </attributes> " | |
72 "</bookmark> </bookmarks>"; | |
73 static const char* kGoodBookmarkNoLabel = | |
74 "<?xml version=\"1.0\" ?> <xml_api_reply version=\"1\"> <bookmarks>" | |
75 " <bookmark> " | |
76 "<title>MyTitle</title> " | |
77 "<url>http://www.google.com/</url> " | |
78 "<timestamp>1153328691085181</timestamp> " | |
79 "<id>N123nasdf239</id> <notebook_id>Bxxxxxxx</notebook_id> " | |
80 "<section_id>Sxxxxxx</section_id> <has_highlight>0</has_highlight>" | |
81 "<labels> </labels> " | |
82 "<attributes> " | |
83 "<attribute> " | |
84 "<name>favicon_url</name> <value>http://www.google.com/favicon.ico</value> " | |
85 "</attribute> " | |
86 "<attribute> " | |
87 "<name>favicon_timestamp</name> <value>1153328653</value> " | |
88 "</attribute> " | |
89 "<attribute> <name>notebook_name</name> <value>My notebook 0</value> " | |
90 "</attribute> " | |
91 "<attribute> <name>section_name</name> <value>My section 0 " | |
92 "</value> </attribute> </attributes> " | |
93 "</bookmark> </bookmarks>"; | |
94 static const char* kGoodBookmarkTwoLabels = | |
95 "<?xml version=\"1.0\" ?> <xml_api_reply version=\"1\"> <bookmarks>" | |
96 " <bookmark> " | |
97 "<title>MyTitle</title> " | |
98 "<url>http://www.google.com/</url> " | |
99 "<timestamp>1153328691085181</timestamp> " | |
100 "<id>N123nasdf239</id> <notebook_id>Bxxxxxxx</notebook_id> " | |
101 "<section_id>Sxxxxxx</section_id> <has_highlight>0</has_highlight>" | |
102 "<labels> <label>Google</label> <label>Homepage</label> </labels> " | |
103 "<attributes> " | |
104 "<attribute> " | |
105 "<name>favicon_url</name> <value>http://www.google.com/favicon.ico</value> " | |
106 "</attribute> " | |
107 "<attribute> " | |
108 "<name>favicon_timestamp</name> <value>1153328653</value> " | |
109 "</attribute> " | |
110 "<attribute> <name>notebook_name</name> <value>My notebook 0</value> " | |
111 "</attribute> " | |
112 "<attribute> <name>section_name</name> <value>My section 0 " | |
113 "</value> </attribute> </attributes> " | |
114 "</bookmark> </bookmarks>"; | |
115 static const char* kGoodBookmarkFolderLabel = | |
116 "<?xml version=\"1.0\" ?> <xml_api_reply version=\"1\"> <bookmarks>" | |
117 " <bookmark> " | |
118 "<title>MyTitle</title> " | |
119 "<url>http://www.google.com/</url> " | |
120 "<timestamp>1153328691085181</timestamp> " | |
121 "<id>N123nasdf239</id> <notebook_id>Bxxxxxxx</notebook_id> " | |
122 "<section_id>Sxxxxxx</section_id> <has_highlight>0</has_highlight>" | |
123 "<labels> <label>Google:Search:Page</label> </labels> " | |
124 "<attributes> " | |
125 "<attribute> " | |
126 "<name>favicon_url</name> <value>http://www.google.com/favicon.ico</value> " | |
127 "</attribute> " | |
128 "<attribute> " | |
129 "<name>favicon_timestamp</name> <value>1153328653</value> " | |
130 "</attribute> " | |
131 "<attribute> <name>notebook_name</name> <value>My notebook 0</value> " | |
132 "</attribute> " | |
133 "<attribute> <name>section_name</name> <value>My section 0 " | |
134 "</value> </attribute> </attributes> " | |
135 "</bookmark> </bookmarks>"; | |
136 static const char* kGoodBookmarkNoFavicon = | |
137 "<?xml version=\"1.0\" ?> <xml_api_reply version=\"1\"> <bookmarks>" | |
138 " <bookmark> " | |
139 "<title>MyTitle</title> " | |
140 "<url>http://www.google.com/</url> " | |
141 "<timestamp>1153328691085181</timestamp> " | |
142 "<id>N123nasdf239</id> <notebook_id>Bxxxxxxx</notebook_id> " | |
143 "<section_id>Sxxxxxx</section_id> <has_highlight>0</has_highlight>" | |
144 "<labels> <label>Google</label> </labels> " | |
145 "<attributes> " | |
146 "<attribute> " | |
147 "<name>favicon_timestamp</name> <value>1153328653</value> " | |
148 "</attribute> " | |
149 "<attribute> <name>notebook_name</name> <value>My notebook 0</value> " | |
150 "</attribute> " | |
151 "<attribute> <name>section_name</name> <value>My section 0 " | |
152 "</value> </attribute> </attributes> " | |
153 "</bookmark> </bookmarks>"; | |
154 static const char* kGoodBookmark2Items = | |
155 "<?xml version=\"1.0\" ?> <xml_api_reply version=\"1\"> <bookmarks>" | |
156 " <bookmark> " | |
157 "<title>MyTitle</title> " | |
158 "<url>http://www.google.com/</url> " | |
159 "<timestamp>1153328691085181</timestamp> " | |
160 "<id>N123nasdf239</id> <notebook_id>Bxxxxxxx</notebook_id> " | |
161 "<section_id>Sxxxxxx</section_id> <has_highlight>0</has_highlight>" | |
162 "<labels> <label>Google</label> </labels> " | |
163 "<attributes> " | |
164 "<attribute> " | |
165 "<name>favicon_url</name> <value>http://www.google.com/favicon.ico</value> " | |
166 "</attribute> " | |
167 "<attribute> " | |
168 "<name>favicon_timestamp</name> <value>1153328653</value> " | |
169 "</attribute> " | |
170 "<attribute> <name>notebook_name</name> <value>My notebook 0</value> " | |
171 "</attribute> " | |
172 "<attribute> <name>section_name</name> <value>My section 0 " | |
173 "</value> </attribute> </attributes> " | |
174 "</bookmark>" | |
175 " <bookmark> " | |
176 "<title>MyOtherTitle</title> " | |
177 "<url>http://www.google.com/mail</url> " | |
178 "<timestamp>1153328691085181</timestamp> " | |
179 "<id>N123nasdf239</id> <notebook_id>Bxxxxxxx</notebook_id> " | |
180 "<section_id>Sxxxxxx</section_id> <has_highlight>0</has_highlight>" | |
181 "<labels> <label>Mail</label> </labels> " | |
182 "<attributes> " | |
183 "<attribute> " | |
184 "<name>favicon_url</name>" | |
185 "<value>http://www.google.com/mail/favicon.ico</value> " | |
186 "</attribute> " | |
187 "<attribute> " | |
188 "<name>favicon_timestamp</name> <value>1253328653</value> " | |
189 "</attribute> " | |
190 "<attribute> <name>notebook_name</name> <value>My notebook 0</value> " | |
191 "</attribute> " | |
192 "<attribute> <name>section_name</name> <value>My section 0 " | |
193 "</value> </attribute> </attributes> " | |
194 "</bookmark>" | |
195 "</bookmarks>"; | |
196 static const char* kEmptyString = ""; | |
197 static const char* kBadBookmarkNoBookmarks = | |
198 " <bookmark> " | |
199 "<title>MyTitle</title> " | |
200 "<url>http://www.google.com/</url> " | |
201 "<timestamp>1153328691085181</timestamp> " | |
202 "<id>N123nasdf239</id> <notebook_id>Bxxxxxxx</notebook_id> " | |
203 "<section_id>Sxxxxxx</section_id> <has_highlight>0</has_highlight>" | |
204 "<labels> <label>Google</label> </labels> " | |
205 "<attributes> " | |
206 "<attribute> " | |
207 "<name>favicon_url</name> <value>http://www.google.com/favicon.ico</value> " | |
208 "</attribute> " | |
209 "<attribute> " | |
210 "<name>favicon_timestamp</name> <value>1153328653</value> " | |
211 "</attribute> " | |
212 "<attribute> <name>notebook_name</name> <value>My notebook 0</value> " | |
213 "</attribute> " | |
214 "<attribute> <name>section_name</name> <value>My section 0 " | |
215 "</value> </attribute> </attributes> " | |
216 "</bookmark> </bookmarks>"; | |
217 static const char* kBadBookmarkNoBookmark = | |
218 "<?xml version=\"1.0\" ?> <xml_api_reply version=\"1\"> <bookmarks>" | |
219 "<title>MyTitle</title> " | |
220 "<url>http://www.google.com/</url> " | |
221 "<timestamp>1153328691085181</timestamp> " | |
222 "<id>N123nasdf239</id> <notebook_id>Bxxxxxxx</notebook_id> " | |
223 "<section_id>Sxxxxxx</section_id> <has_highlight>0</has_highlight>" | |
224 "<labels> <label>Google</label> </labels> " | |
225 "<attributes> " | |
226 "<attribute> " | |
227 "<name>favicon_url</name> <value>http://www.google.com/favicon.ico</value> " | |
228 "</attribute> " | |
229 "<attribute> " | |
230 "<name>favicon_timestamp</name> <value>1153328653</value> " | |
231 "</attribute> " | |
232 "<attribute> <name>notebook_name</name> <value>My notebook 0</value> " | |
233 "</attribute> " | |
234 "<attribute> <name>section_name</name> <value>My section 0 " | |
235 "</value> </attribute> </attributes> " | |
236 "</bookmark> </bookmarks>"; | |
237 static const char* kBadBookmarkNoTitle = | |
238 "<?xml version=\"1.0\" ?> <xml_api_reply version=\"1\"> <bookmarks>" | |
239 " <bookmark> " | |
240 "<url>http://www.google.com/</url> " | |
241 "<timestamp>1153328691085181</timestamp> " | |
242 "<id>N123nasdf239</id> <notebook_id>Bxxxxxxx</notebook_id> " | |
243 "<section_id>Sxxxxxx</section_id> <has_highlight>0</has_highlight>" | |
244 "<labels> <label>Google</label> </labels> " | |
245 "<attributes> " | |
246 "<attribute> " | |
247 "<name>favicon_url</name> <value>http://www.google.com/favicon.ico</value> " | |
248 "</attribute> " | |
249 "<attribute> " | |
250 "<name>favicon_timestamp</name> <value>1153328653</value> " | |
251 "</attribute> " | |
252 "<attribute> <name>notebook_name</name> <value>My notebook 0</value> " | |
253 "</attribute> " | |
254 "<attribute> <name>section_name</name> <value>My section 0 " | |
255 "</value> </attribute> </attributes> " | |
256 "</bookmark> </bookmarks>"; | |
257 static const char* kBadBookmarkNoUrl = | |
258 "<?xml version=\"1.0\" ?> <xml_api_reply version=\"1\"> <bookmarks>" | |
259 " <bookmark> " | |
260 "<title>MyTitle</title> " | |
261 "<timestamp>1153328691085181</timestamp> " | |
262 "<id>N123nasdf239</id> <notebook_id>Bxxxxxxx</notebook_id> " | |
263 "<section_id>Sxxxxxx</section_id> <has_highlight>0</has_highlight>" | |
264 "<labels> <label>Google</label> </labels> " | |
265 "<attributes> " | |
266 "<attribute> " | |
267 "<name>favicon_url</name> <value>http://www.google.com/favicon.ico</value> " | |
268 "</attribute> " | |
269 "<attribute> " | |
270 "<name>favicon_timestamp</name> <value>1153328653</value> " | |
271 "</attribute> " | |
272 "<attribute> <name>notebook_name</name> <value>My notebook 0</value> " | |
273 "</attribute> " | |
274 "<attribute> <name>section_name</name> <value>My section 0 " | |
275 "</value> </attribute> </attributes> " | |
276 "</bookmark> </bookmarks>"; | |
277 static const char* kBadBookmarkNoTimestamp = | |
278 "<?xml version=\"1.0\" ?> <xml_api_reply version=\"1\"> <bookmarks>" | |
279 " <bookmark> " | |
280 "<title>MyTitle</title> " | |
281 "<url>http://www.google.com/</url> " | |
282 "<id>N123nasdf239</id> <notebook_id>Bxxxxxxx</notebook_id> " | |
283 "<section_id>Sxxxxxx</section_id> <has_highlight>0</has_highlight>" | |
284 "<labels> <label>Google</label> </labels> " | |
285 "<attributes> " | |
286 "<attribute> " | |
287 "<name>favicon_url</name> <value>http://www.google.com/favicon.ico</value> " | |
288 "</attribute> " | |
289 "<attribute> " | |
290 "<name>favicon_timestamp</name> <value>1153328653</value> " | |
291 "</attribute> " | |
292 "<attribute> <name>notebook_name</name> <value>My notebook 0</value> " | |
293 "</attribute> " | |
294 "<attribute> <name>section_name</name> <value>My section 0 " | |
295 "</value> </attribute> </attributes> " | |
296 "</bookmark> </bookmarks>"; | |
297 static const char* kBadBookmarkNoLabels = | |
298 "<?xml version=\"1.0\" ?> <xml_api_reply version=\"1\"> <bookmarks>" | |
299 " <bookmark> " | |
300 "<title>MyTitle</title> " | |
301 "<url>http://www.google.com/</url> " | |
302 "<timestamp>1153328691085181</timestamp> " | |
303 "<id>N123nasdf239</id> <notebook_id>Bxxxxxxx</notebook_id> " | |
304 "<section_id>Sxxxxxx</section_id> <has_highlight>0</has_highlight>" | |
305 "<attributes> " | |
306 "<attribute> " | |
307 "<name>favicon_url</name> <value>http://www.google.com/favicon.ico</value> " | |
308 "</attribute> " | |
309 "<attribute> " | |
310 "<name>favicon_timestamp</name> <value>1153328653</value> " | |
311 "</attribute> " | |
312 "<attribute> <name>notebook_name</name> <value>My notebook 0</value> " | |
313 "</attribute> " | |
314 "<attribute> <name>section_name</name> <value>My section 0 " | |
315 "</value> </attribute> </attributes> " | |
316 "</bookmark> </bookmarks>"; | |
317 | |
318 XmlReader reader; | |
319 std::string bookmark_xml; | |
320 std::vector<ImportedBookmarkEntry> bookmarks; | |
321 | |
322 const GURL url(kUrl); | |
323 const GURL other_url(kOtherUrl); | |
324 | |
325 // Test doesn't work if the importer thinks this is the first run of Chromium. | |
326 // Mark this as a subsequent run of the browser. | |
327 first_run::internal::first_run_ = first_run::internal::FIRST_RUN_FALSE; | |
328 | |
329 // Test case 1 is parsing a basic bookmark with a single label. | |
330 bookmark_xml = kGoodBookmark; | |
331 bookmarks.clear(); | |
332 XmlReader reader1; | |
333 EXPECT_TRUE(reader1.Load(bookmark_xml)); | |
334 EXPECT_TRUE(Toolbar5Importer::ParseBookmarksFromReader(&reader1, &bookmarks, | |
335 kBookmarkGroupTitle)); | |
336 | |
337 ASSERT_EQ(1U, bookmarks.size()); | |
338 EXPECT_FALSE(bookmarks[0].in_toolbar); | |
339 EXPECT_EQ(kTitle, bookmarks[0].title); | |
340 EXPECT_EQ(url, bookmarks[0].url); | |
341 ASSERT_EQ(2U, bookmarks[0].path.size()); | |
342 EXPECT_EQ(kFolder, bookmarks[0].path[1]); | |
343 | |
344 // Test case 2 is parsing a single bookmark with no label. | |
345 bookmark_xml = kGoodBookmarkNoLabel; | |
346 bookmarks.clear(); | |
347 XmlReader reader2; | |
348 EXPECT_TRUE(reader2.Load(bookmark_xml)); | |
349 EXPECT_TRUE(Toolbar5Importer::ParseBookmarksFromReader(&reader2, &bookmarks, | |
350 kBookmarkGroupTitle)); | |
351 | |
352 ASSERT_EQ(1U, bookmarks.size()); | |
353 EXPECT_FALSE(bookmarks[0].in_toolbar); | |
354 EXPECT_EQ(kTitle, bookmarks[0].title); | |
355 EXPECT_EQ(url, bookmarks[0].url); | |
356 EXPECT_EQ(1U, bookmarks[0].path.size()); | |
357 | |
358 // Test case 3 is parsing a single bookmark with two labels. | |
359 bookmark_xml = kGoodBookmarkTwoLabels; | |
360 bookmarks.clear(); | |
361 XmlReader reader3; | |
362 EXPECT_TRUE(reader3.Load(bookmark_xml)); | |
363 EXPECT_TRUE(Toolbar5Importer::ParseBookmarksFromReader(&reader3, &bookmarks, | |
364 kBookmarkGroupTitle)); | |
365 | |
366 ASSERT_EQ(2U, bookmarks.size()); | |
367 EXPECT_FALSE(bookmarks[0].in_toolbar); | |
368 EXPECT_FALSE(bookmarks[1].in_toolbar); | |
369 EXPECT_EQ(kTitle, bookmarks[0].title); | |
370 EXPECT_EQ(kTitle, bookmarks[1].title); | |
371 EXPECT_EQ(url, bookmarks[0].url); | |
372 EXPECT_EQ(url, bookmarks[1].url); | |
373 ASSERT_EQ(2U, bookmarks[0].path.size()); | |
374 EXPECT_EQ(kFolder, bookmarks[0].path[1]); | |
375 ASSERT_EQ(2U, bookmarks[1].path.size()); | |
376 EXPECT_EQ(kFolder2, bookmarks[1].path[1]); | |
377 | |
378 // Test case 4 is parsing a single bookmark which has a label with a colon, | |
379 // this test file name translation between Toolbar and Chrome. | |
380 bookmark_xml = kGoodBookmarkFolderLabel; | |
381 bookmarks.clear(); | |
382 XmlReader reader4; | |
383 EXPECT_TRUE(reader4.Load(bookmark_xml)); | |
384 EXPECT_TRUE(Toolbar5Importer::ParseBookmarksFromReader(&reader4, &bookmarks, | |
385 kBookmarkGroupTitle)); | |
386 | |
387 ASSERT_EQ(1U, bookmarks.size()); | |
388 EXPECT_FALSE(bookmarks[0].in_toolbar); | |
389 EXPECT_EQ(kTitle, bookmarks[0].title); | |
390 EXPECT_EQ(url, bookmarks[0].url); | |
391 ASSERT_EQ(4U, bookmarks[0].path.size()); | |
392 EXPECT_EQ(string16(kFolderArray[0]), | |
393 bookmarks[0].path[1]); | |
394 EXPECT_EQ(string16(kFolderArray[1]), | |
395 bookmarks[0].path[2]); | |
396 EXPECT_EQ(string16(kFolderArray[2]), | |
397 bookmarks[0].path[3]); | |
398 | |
399 // Test case 5 is parsing a single bookmark without a favicon URL. | |
400 bookmark_xml = kGoodBookmarkNoFavicon; | |
401 bookmarks.clear(); | |
402 XmlReader reader5; | |
403 EXPECT_TRUE(reader5.Load(bookmark_xml)); | |
404 EXPECT_TRUE(Toolbar5Importer::ParseBookmarksFromReader(&reader5, &bookmarks, | |
405 kBookmarkGroupTitle)); | |
406 | |
407 ASSERT_EQ(1U, bookmarks.size()); | |
408 EXPECT_FALSE(bookmarks[0].in_toolbar); | |
409 EXPECT_EQ(kTitle, bookmarks[0].title); | |
410 EXPECT_EQ(url, bookmarks[0].url); | |
411 ASSERT_EQ(2U, bookmarks[0].path.size()); | |
412 EXPECT_EQ(kFolder, bookmarks[0].path[1]); | |
413 | |
414 // Test case 6 is parsing two bookmarks. | |
415 bookmark_xml = kGoodBookmark2Items; | |
416 bookmarks.clear(); | |
417 XmlReader reader6; | |
418 EXPECT_TRUE(reader6.Load(bookmark_xml)); | |
419 EXPECT_TRUE(Toolbar5Importer::ParseBookmarksFromReader(&reader6, &bookmarks, | |
420 kBookmarkGroupTitle)); | |
421 | |
422 ASSERT_EQ(2U, bookmarks.size()); | |
423 EXPECT_FALSE(bookmarks[0].in_toolbar); | |
424 EXPECT_FALSE(bookmarks[1].in_toolbar); | |
425 EXPECT_EQ(kTitle, bookmarks[0].title); | |
426 EXPECT_EQ(kOtherTitle, bookmarks[1].title); | |
427 EXPECT_EQ(url, bookmarks[0].url); | |
428 EXPECT_EQ(other_url, bookmarks[1].url); | |
429 ASSERT_EQ(2U, bookmarks[0].path.size()); | |
430 EXPECT_EQ(kFolder, bookmarks[0].path[1]); | |
431 ASSERT_EQ(2U, bookmarks[1].path.size()); | |
432 EXPECT_EQ(kOtherFolder, bookmarks[1].path[1]); | |
433 | |
434 // Test case 7 is parsing an empty string for bookmarks. | |
435 bookmark_xml = kEmptyString; | |
436 bookmarks.clear(); | |
437 XmlReader reader7; | |
438 EXPECT_FALSE(reader7.Load(bookmark_xml)); | |
439 | |
440 // Test case 8 is testing the error when no <bookmarks> section is present. | |
441 bookmark_xml = kBadBookmarkNoBookmarks; | |
442 bookmarks.clear(); | |
443 XmlReader reader8; | |
444 EXPECT_TRUE(reader8.Load(bookmark_xml)); | |
445 EXPECT_FALSE(Toolbar5Importer::ParseBookmarksFromReader(&reader8, | |
446 &bookmarks, kBookmarkGroupTitle)); | |
447 | |
448 // Test case 9 tests when no <bookmark> section is present. | |
449 bookmark_xml = kBadBookmarkNoBookmark; | |
450 bookmarks.clear(); | |
451 XmlReader reader9; | |
452 EXPECT_TRUE(reader9.Load(bookmark_xml)); | |
453 EXPECT_FALSE(Toolbar5Importer::ParseBookmarksFromReader(&reader9, | |
454 &bookmarks, kBookmarkGroupTitle)); | |
455 | |
456 | |
457 // Test case 10 tests when a bookmark has no <title> section. | |
458 bookmark_xml = kBadBookmarkNoTitle; | |
459 bookmarks.clear(); | |
460 XmlReader reader10; | |
461 EXPECT_TRUE(reader10.Load(bookmark_xml)); | |
462 EXPECT_FALSE(Toolbar5Importer::ParseBookmarksFromReader(&reader10, | |
463 &bookmarks, kBookmarkGroupTitle)); | |
464 | |
465 // Test case 11 tests when a bookmark has no <url> section. | |
466 bookmark_xml = kBadBookmarkNoUrl; | |
467 bookmarks.clear(); | |
468 XmlReader reader11; | |
469 EXPECT_TRUE(reader11.Load(bookmark_xml)); | |
470 EXPECT_FALSE(Toolbar5Importer::ParseBookmarksFromReader(&reader11, | |
471 &bookmarks, kBookmarkGroupTitle)); | |
472 | |
473 // Test case 12 tests when a bookmark has no <timestamp> section. | |
474 bookmark_xml = kBadBookmarkNoTimestamp; | |
475 bookmarks.clear(); | |
476 XmlReader reader12; | |
477 EXPECT_TRUE(reader12.Load(bookmark_xml)); | |
478 EXPECT_FALSE(Toolbar5Importer::ParseBookmarksFromReader(&reader12, | |
479 &bookmarks, kBookmarkGroupTitle)); | |
480 | |
481 // Test case 13 tests when a bookmark has no <labels> section. | |
482 bookmark_xml = kBadBookmarkNoLabels; | |
483 bookmarks.clear(); | |
484 XmlReader reader13; | |
485 EXPECT_TRUE(reader13.Load(bookmark_xml)); | |
486 EXPECT_FALSE(Toolbar5Importer::ParseBookmarksFromReader(&reader13, | |
487 &bookmarks, kBookmarkGroupTitle)); | |
488 } | |
OLD | NEW |