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

Side by Side Diff: chrome/browser/drive/fake_drive_service.cc

Issue 309463002: drive: Change DriveServiceInterface::GetChangeList's callback type to ChangeListCallback (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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 | Annotate | Revision Log
OLDNEW
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/browser/drive/fake_drive_service.h" 5 #include "chrome/browser/drive/fake_drive_service.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 15 matching lines...) Expand all
26 #include "net/base/url_util.h" 26 #include "net/base/url_util.h"
27 27
28 using content::BrowserThread; 28 using content::BrowserThread;
29 using google_apis::AboutResource; 29 using google_apis::AboutResource;
30 using google_apis::AboutResourceCallback; 30 using google_apis::AboutResourceCallback;
31 using google_apis::AppList; 31 using google_apis::AppList;
32 using google_apis::AppListCallback; 32 using google_apis::AppListCallback;
33 using google_apis::AuthStatusCallback; 33 using google_apis::AuthStatusCallback;
34 using google_apis::AuthorizeAppCallback; 34 using google_apis::AuthorizeAppCallback;
35 using google_apis::CancelCallback; 35 using google_apis::CancelCallback;
36 using google_apis::ChangeList;
37 using google_apis::ChangeListCallback;
36 using google_apis::ChangeResource; 38 using google_apis::ChangeResource;
37 using google_apis::DownloadActionCallback; 39 using google_apis::DownloadActionCallback;
38 using google_apis::EntryActionCallback; 40 using google_apis::EntryActionCallback;
39 using google_apis::FileResource; 41 using google_apis::FileResource;
40 using google_apis::GDATA_FILE_ERROR; 42 using google_apis::GDATA_FILE_ERROR;
41 using google_apis::GDATA_NO_CONNECTION; 43 using google_apis::GDATA_NO_CONNECTION;
42 using google_apis::GDATA_OTHER_ERROR; 44 using google_apis::GDATA_OTHER_ERROR;
43 using google_apis::GDataErrorCode; 45 using google_apis::GDataErrorCode;
44 using google_apis::GetContentCallback; 46 using google_apis::GetContentCallback;
45 using google_apis::GetResourceEntryCallback; 47 using google_apis::GetResourceEntryCallback;
(...skipping 17 matching lines...) Expand all
63 namespace test_util = google_apis::test_util; 65 namespace test_util = google_apis::test_util;
64 66
65 namespace drive { 67 namespace drive {
66 namespace { 68 namespace {
67 69
68 // Returns true if a resource entry matches with the search query. 70 // Returns true if a resource entry matches with the search query.
69 // Supports queries consist of following format. 71 // Supports queries consist of following format.
70 // - Phrases quoted by double/single quotes 72 // - Phrases quoted by double/single quotes
71 // - AND search for multiple words/phrases segmented by space 73 // - AND search for multiple words/phrases segmented by space
72 // - Limited attribute search. Only "title:" is supported. 74 // - Limited attribute search. Only "title:" is supported.
73 bool EntryMatchWithQuery(const ResourceEntry& entry, 75 bool EntryMatchWithQuery(const ChangeResource& entry,
74 const std::string& query) { 76 const std::string& query) {
75 base::StringTokenizer tokenizer(query, " "); 77 base::StringTokenizer tokenizer(query, " ");
76 tokenizer.set_quote_chars("\"'"); 78 tokenizer.set_quote_chars("\"'");
77 while (tokenizer.GetNext()) { 79 while (tokenizer.GetNext()) {
78 std::string key, value; 80 std::string key, value;
79 const std::string& token = tokenizer.token(); 81 const std::string& token = tokenizer.token();
80 if (token.find(':') == std::string::npos) { 82 if (token.find(':') == std::string::npos) {
81 base::TrimString(token, "\"'", &value); 83 base::TrimString(token, "\"'", &value);
82 } else { 84 } else {
83 base::StringTokenizer key_value(token, ":"); 85 base::StringTokenizer key_value(token, ":");
84 key_value.set_quote_chars("\"'"); 86 key_value.set_quote_chars("\"'");
85 if (!key_value.GetNext()) 87 if (!key_value.GetNext())
86 return false; 88 return false;
87 key = key_value.token(); 89 key = key_value.token();
88 if (!key_value.GetNext()) 90 if (!key_value.GetNext())
89 return false; 91 return false;
90 base::TrimString(key_value.token(), "\"'", &value); 92 base::TrimString(key_value.token(), "\"'", &value);
91 } 93 }
92 94
93 // TODO(peria): Deal with other attributes than title. 95 // TODO(peria): Deal with other attributes than title.
94 if (!key.empty() && key != "title") 96 if (!key.empty() && key != "title")
95 return false; 97 return false;
96 // Search query in the title. 98 // Search query in the title.
97 if (entry.title().find(value) == std::string::npos) 99 if (!entry.file() ||
100 entry.file()->title().find(value) == std::string::npos)
98 return false; 101 return false;
99 } 102 }
100 return true; 103 return true;
101 } 104 }
102 105
103 void ScheduleUploadRangeCallback(const UploadRangeCallback& callback, 106 void ScheduleUploadRangeCallback(const UploadRangeCallback& callback,
104 int64 start_position, 107 int64 start_position,
105 int64 end_position, 108 int64 end_position,
106 GDataErrorCode error, 109 GDataErrorCode error,
107 scoped_ptr<ResourceEntry> entry) { 110 scoped_ptr<ResourceEntry> entry) {
108 base::MessageLoop::current()->PostTask( 111 base::MessageLoop::current()->PostTask(
109 FROM_HERE, 112 FROM_HERE,
110 base::Bind(callback, 113 base::Bind(callback,
111 UploadRangeResponse(error, 114 UploadRangeResponse(error,
112 start_position, 115 start_position,
113 end_position), 116 end_position),
114 base::Passed(&entry))); 117 base::Passed(&entry)));
115 } 118 }
116 119
117 void EntryActionCallbackAdapter( 120 void EntryActionCallbackAdapter(
118 const EntryActionCallback& callback, 121 const EntryActionCallback& callback,
119 GDataErrorCode error, scoped_ptr<ResourceEntry> resource_entry) { 122 GDataErrorCode error, scoped_ptr<ResourceEntry> resource_entry) {
120 callback.Run(error); 123 callback.Run(error);
121 } 124 }
122 125
126 void GetResourceListCallbackAdapter(const GetResourceListCallback& callback,
127 GDataErrorCode error,
128 scoped_ptr<ChangeList> change_list) {
129 callback.Run(error, change_list ?
130 util::ConvertChangeListToResourceList(*change_list) :
131 scoped_ptr<ResourceList>());
132 }
133
123 } // namespace 134 } // namespace
124 135
125 struct FakeDriveService::EntryInfo { 136 struct FakeDriveService::EntryInfo {
126 google_apis::ChangeResource change_resource; 137 google_apis::ChangeResource change_resource;
127 GURL share_url; 138 GURL share_url;
128 std::string content_data; 139 std::string content_data;
129 }; 140 };
130 141
131 struct FakeDriveService::UploadSession { 142 struct FakeDriveService::UploadSession {
132 std::string content_type; 143 std::string content_type;
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 ++blocked_resource_list_load_count_; 279 ++blocked_resource_list_load_count_;
269 return CancelCallback(); 280 return CancelCallback();
270 } 281 }
271 282
272 GetResourceListInternal(0, // start changestamp 283 GetResourceListInternal(0, // start changestamp
273 std::string(), // empty search query 284 std::string(), // empty search query
274 std::string(), // no directory resource id, 285 std::string(), // no directory resource id,
275 0, // start offset 286 0, // start offset
276 default_max_results_, 287 default_max_results_,
277 &resource_list_load_count_, 288 &resource_list_load_count_,
278 callback); 289 base::Bind(&GetResourceListCallbackAdapter,
290 callback));
279 return CancelCallback(); 291 return CancelCallback();
280 } 292 }
281 293
282 CancelCallback FakeDriveService::GetResourceListInDirectory( 294 CancelCallback FakeDriveService::GetResourceListInDirectory(
283 const std::string& directory_resource_id, 295 const std::string& directory_resource_id,
284 const GetResourceListCallback& callback) { 296 const GetResourceListCallback& callback) {
285 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 297 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
286 DCHECK(!directory_resource_id.empty()); 298 DCHECK(!directory_resource_id.empty());
287 DCHECK(!callback.is_null()); 299 DCHECK(!callback.is_null());
288 300
289 GetResourceListInternal(0, // start changestamp 301 GetResourceListInternal(0, // start changestamp
290 std::string(), // empty search query 302 std::string(), // empty search query
291 directory_resource_id, 303 directory_resource_id,
292 0, // start offset 304 0, // start offset
293 default_max_results_, 305 default_max_results_,
294 &directory_load_count_, 306 &directory_load_count_,
295 callback); 307 base::Bind(&GetResourceListCallbackAdapter,
308 callback));
296 return CancelCallback(); 309 return CancelCallback();
297 } 310 }
298 311
299 CancelCallback FakeDriveService::Search( 312 CancelCallback FakeDriveService::Search(
300 const std::string& search_query, 313 const std::string& search_query,
301 const GetResourceListCallback& callback) { 314 const GetResourceListCallback& callback) {
302 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 315 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
303 DCHECK(!search_query.empty()); 316 DCHECK(!search_query.empty());
304 DCHECK(!callback.is_null()); 317 DCHECK(!callback.is_null());
305 318
306 GetResourceListInternal(0, // start changestamp 319 GetResourceListInternal(0, // start changestamp
307 search_query, 320 search_query,
308 std::string(), // no directory resource id, 321 std::string(), // no directory resource id,
309 0, // start offset 322 0, // start offset
310 default_max_results_, 323 default_max_results_,
311 NULL, 324 NULL,
312 callback); 325 base::Bind(&GetResourceListCallbackAdapter,
326 callback));
313 return CancelCallback(); 327 return CancelCallback();
314 } 328 }
315 329
316 CancelCallback FakeDriveService::SearchByTitle( 330 CancelCallback FakeDriveService::SearchByTitle(
317 const std::string& title, 331 const std::string& title,
318 const std::string& directory_resource_id, 332 const std::string& directory_resource_id,
319 const GetResourceListCallback& callback) { 333 const GetResourceListCallback& callback) {
320 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 334 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
321 DCHECK(!title.empty()); 335 DCHECK(!title.empty());
322 DCHECK(!callback.is_null()); 336 DCHECK(!callback.is_null());
323 337
324 // Note: the search implementation here doesn't support quotation unescape, 338 // Note: the search implementation here doesn't support quotation unescape,
325 // so don't escape here. 339 // so don't escape here.
326 GetResourceListInternal(0, // start changestamp 340 GetResourceListInternal(0, // start changestamp
327 base::StringPrintf("title:'%s'", title.c_str()), 341 base::StringPrintf("title:'%s'", title.c_str()),
328 directory_resource_id, 342 directory_resource_id,
329 0, // start offset 343 0, // start offset
330 default_max_results_, 344 default_max_results_,
331 NULL, 345 NULL,
332 callback); 346 base::Bind(&GetResourceListCallbackAdapter,
347 callback));
333 return CancelCallback(); 348 return CancelCallback();
334 } 349 }
335 350
336 CancelCallback FakeDriveService::GetChangeList( 351 CancelCallback FakeDriveService::GetChangeList(
337 int64 start_changestamp, 352 int64 start_changestamp,
338 const GetResourceListCallback& callback) { 353 const ChangeListCallback& callback) {
339 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 354 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
340 DCHECK(!callback.is_null()); 355 DCHECK(!callback.is_null());
341 356
342 GetResourceListInternal(start_changestamp, 357 GetResourceListInternal(start_changestamp,
343 std::string(), // empty search query 358 std::string(), // empty search query
344 std::string(), // no directory resource id, 359 std::string(), // no directory resource id,
345 0, // start offset 360 0, // start offset
346 default_max_results_, 361 default_max_results_,
347 &change_list_load_count_, 362 &change_list_load_count_,
348 callback); 363 callback);
349 return CancelCallback(); 364 return CancelCallback();
350 } 365 }
351 366
352 CancelCallback FakeDriveService::GetRemainingChangeList( 367 CancelCallback FakeDriveService::GetRemainingChangeList(
353 const GURL& next_link, 368 const GURL& next_link,
354 const GetResourceListCallback& callback) { 369 const ChangeListCallback& callback) {
355 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 370 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
356 DCHECK(!next_link.is_empty()); 371 DCHECK(!next_link.is_empty());
357 DCHECK(!callback.is_null()); 372 DCHECK(!callback.is_null());
358 373
359 // "changestamp", "q", "parent" and "start-offset" are parameters to 374 // "changestamp", "q", "parent" and "start-offset" are parameters to
360 // implement "paging" of the result on FakeDriveService. 375 // implement "paging" of the result on FakeDriveService.
361 // The URL should be the one filled in GetResourceListInternal of the 376 // The URL should be the one filled in GetResourceListInternal of the
362 // previous method invocation, so it should start with "http://localhost/?". 377 // previous method invocation, so it should start with "http://localhost/?".
363 // See also GetResourceListInternal. 378 // See also GetResourceListInternal.
364 DCHECK_EQ(next_link.host(), "localhost"); 379 DCHECK_EQ(next_link.host(), "localhost");
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 return CancelCallback(); 412 return CancelCallback();
398 } 413 }
399 414
400 CancelCallback FakeDriveService::GetRemainingFileList( 415 CancelCallback FakeDriveService::GetRemainingFileList(
401 const GURL& next_link, 416 const GURL& next_link,
402 const GetResourceListCallback& callback) { 417 const GetResourceListCallback& callback) {
403 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 418 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
404 DCHECK(!next_link.is_empty()); 419 DCHECK(!next_link.is_empty());
405 DCHECK(!callback.is_null()); 420 DCHECK(!callback.is_null());
406 421
407 return GetRemainingChangeList(next_link, callback); 422 return GetRemainingChangeList(
423 next_link, base::Bind(&GetResourceListCallbackAdapter, callback));
408 } 424 }
409 425
410 CancelCallback FakeDriveService::GetResourceEntry( 426 CancelCallback FakeDriveService::GetResourceEntry(
411 const std::string& resource_id, 427 const std::string& resource_id,
412 const GetResourceEntryCallback& callback) { 428 const GetResourceEntryCallback& callback) {
413 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 429 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
414 DCHECK(!callback.is_null()); 430 DCHECK(!callback.is_null());
415 431
416 if (offline_) { 432 if (offline_) {
417 scoped_ptr<ResourceEntry> null; 433 scoped_ptr<ResourceEntry> null;
(...skipping 951 matching lines...) Expand 10 before | Expand all | Expand 10 after
1369 return raw_new_entry; 1385 return raw_new_entry;
1370 } 1386 }
1371 1387
1372 void FakeDriveService::GetResourceListInternal( 1388 void FakeDriveService::GetResourceListInternal(
1373 int64 start_changestamp, 1389 int64 start_changestamp,
1374 const std::string& search_query, 1390 const std::string& search_query,
1375 const std::string& directory_resource_id, 1391 const std::string& directory_resource_id,
1376 int start_offset, 1392 int start_offset,
1377 int max_results, 1393 int max_results,
1378 int* load_counter, 1394 int* load_counter,
1379 const GetResourceListCallback& callback) { 1395 const ChangeListCallback& callback) {
1380 if (offline_) { 1396 if (offline_) {
1381 base::MessageLoop::current()->PostTask( 1397 base::MessageLoop::current()->PostTask(
1382 FROM_HERE, 1398 FROM_HERE,
1383 base::Bind(callback, 1399 base::Bind(callback,
1384 GDATA_NO_CONNECTION, 1400 GDATA_NO_CONNECTION,
1385 base::Passed(scoped_ptr<ResourceList>()))); 1401 base::Passed(scoped_ptr<ChangeList>())));
1386 return; 1402 return;
1387 } 1403 }
1388 1404
1389 // Filter out entries per parameters like |directory_resource_id| and 1405 // Filter out entries per parameters like |directory_resource_id| and
1390 // |search_query|. 1406 // |search_query|.
1391 ScopedVector<ResourceEntry> entries; 1407 ScopedVector<ChangeResource> entries;
1392 int num_entries_matched = 0; 1408 int num_entries_matched = 0;
1393 for (EntryInfoMap::iterator it = entries_.begin(); it != entries_.end(); 1409 for (EntryInfoMap::iterator it = entries_.begin(); it != entries_.end();
1394 ++it) { 1410 ++it) {
1395 scoped_ptr<ResourceEntry> entry = 1411 const ChangeResource& entry = it->second->change_resource;
1396 util::ConvertChangeResourceToResourceEntry(it->second->change_resource);
1397 bool should_exclude = false; 1412 bool should_exclude = false;
1398 1413
1399 // If |directory_resource_id| is set, exclude the entry if it's not in 1414 // If |directory_resource_id| is set, exclude the entry if it's not in
1400 // the target directory. 1415 // the target directory.
1401 if (!directory_resource_id.empty()) { 1416 if (!directory_resource_id.empty()) {
1402 // Get the parent resource ID of the entry. 1417 // Get the parent resource ID of the entry.
1403 std::string parent_resource_id; 1418 std::string parent_resource_id;
1404 const google_apis::Link* parent_link = 1419 if (entry.file() && !entry.file()->parents().empty())
1405 entry->GetLinkByType(Link::LINK_PARENT); 1420 parent_resource_id = entry.file()->parents()[0].file_id();
1406 if (parent_link) { 1421
1407 parent_resource_id =
1408 net::UnescapeURLComponent(parent_link->href().ExtractFileName(),
1409 net::UnescapeRule::URL_SPECIAL_CHARS);
1410 }
1411 if (directory_resource_id != parent_resource_id) 1422 if (directory_resource_id != parent_resource_id)
1412 should_exclude = true; 1423 should_exclude = true;
1413 } 1424 }
1414 1425
1415 // If |search_query| is set, exclude the entry if it does not contain the 1426 // If |search_query| is set, exclude the entry if it does not contain the
1416 // search query in the title. 1427 // search query in the title.
1417 if (!should_exclude && !search_query.empty() && 1428 if (!should_exclude && !search_query.empty() &&
1418 !EntryMatchWithQuery(*entry, search_query)) { 1429 !EntryMatchWithQuery(entry, search_query)) {
1419 should_exclude = true; 1430 should_exclude = true;
1420 } 1431 }
1421 1432
1422 // If |start_changestamp| is set, exclude the entry if the 1433 // If |start_changestamp| is set, exclude the entry if the
1423 // changestamp is older than |largest_changestamp|. 1434 // changestamp is older than |largest_changestamp|.
1424 // See https://developers.google.com/google-apps/documents-list/ 1435 // See https://developers.google.com/google-apps/documents-list/
1425 // #retrieving_all_changes_since_a_given_changestamp 1436 // #retrieving_all_changes_since_a_given_changestamp
1426 if (start_changestamp > 0 && entry->changestamp() < start_changestamp) 1437 if (start_changestamp > 0 && entry.change_id() < start_changestamp)
1427 should_exclude = true; 1438 should_exclude = true;
1428 1439
1429 // If the caller requests other list than change list by specifying 1440 // If the caller requests other list than change list by specifying
1430 // zero-|start_changestamp|, exclude deleted entry from the result. 1441 // zero-|start_changestamp|, exclude deleted entry from the result.
1431 if (!start_changestamp && entry->deleted()) 1442 const bool deleted = entry.is_deleted() ||
1443 (entry.file() && entry.file()->labels().is_trashed());
1444 if (!start_changestamp && deleted)
1432 should_exclude = true; 1445 should_exclude = true;
1433 1446
1434 // The entry matched the criteria for inclusion. 1447 // The entry matched the criteria for inclusion.
1435 if (!should_exclude) 1448 if (!should_exclude)
1436 ++num_entries_matched; 1449 ++num_entries_matched;
1437 1450
1438 // If |start_offset| is set, exclude the entry if the entry is before the 1451 // If |start_offset| is set, exclude the entry if the entry is before the
1439 // start index. <= instead of < as |num_entries_matched| was 1452 // start index. <= instead of < as |num_entries_matched| was
1440 // already incremented. 1453 // already incremented.
1441 if (start_offset > 0 && num_entries_matched <= start_offset) 1454 if (start_offset > 0 && num_entries_matched <= start_offset)
1442 should_exclude = true; 1455 should_exclude = true;
1443 1456
1444 if (!should_exclude) 1457 if (!should_exclude) {
1445 entries.push_back(entry.release()); 1458 scoped_ptr<ChangeResource> entry_copied(new ChangeResource);
1459 entry_copied->set_change_id(entry.change_id());
1460 entry_copied->set_file_id(entry.file_id());
1461 entry_copied->set_deleted(entry.is_deleted());
1462 if (entry.file()) {
1463 entry_copied->set_file(
1464 make_scoped_ptr(new FileResource(*entry.file())));
1465 }
1466 entry_copied->set_modification_date(entry.modification_date());
1467 entries.push_back(entry_copied.release());
1468 }
1446 } 1469 }
1447 1470
1448 scoped_ptr<ResourceList> resource_list(new ResourceList); 1471 scoped_ptr<ChangeList> change_list(new ChangeList);
1449 if (start_changestamp > 0 && start_offset == 0) { 1472 if (start_changestamp > 0 && start_offset == 0) {
1450 resource_list->set_largest_changestamp( 1473 change_list->set_largest_change_id(about_resource_->largest_change_id());
1451 about_resource_->largest_change_id());
1452 } 1474 }
1453 1475
1454 // If |max_results| is set, trim the entries if the number exceeded the max 1476 // If |max_results| is set, trim the entries if the number exceeded the max
1455 // results. 1477 // results.
1456 if (max_results > 0 && entries.size() > static_cast<size_t>(max_results)) { 1478 if (max_results > 0 && entries.size() > static_cast<size_t>(max_results)) {
1457 entries.erase(entries.begin() + max_results, entries.end()); 1479 entries.erase(entries.begin() + max_results, entries.end());
1458 // Adds the next URL. 1480 // Adds the next URL.
1459 // Here, we embed information which is needed for continuing the 1481 // Here, we embed information which is needed for continuing the
1460 // GetResourceList request in the next invocation into url query 1482 // GetResourceList request in the next invocation into url query
1461 // parameters. 1483 // parameters.
1462 GURL next_url(base::StringPrintf( 1484 GURL next_url(base::StringPrintf(
1463 "http://localhost/?start-offset=%d&max-results=%d", 1485 "http://localhost/?start-offset=%d&max-results=%d",
1464 start_offset + max_results, 1486 start_offset + max_results,
1465 max_results)); 1487 max_results));
1466 if (start_changestamp > 0) { 1488 if (start_changestamp > 0) {
1467 next_url = net::AppendOrReplaceQueryParameter( 1489 next_url = net::AppendOrReplaceQueryParameter(
1468 next_url, "changestamp", 1490 next_url, "changestamp",
1469 base::Int64ToString(start_changestamp).c_str()); 1491 base::Int64ToString(start_changestamp).c_str());
1470 } 1492 }
1471 if (!search_query.empty()) { 1493 if (!search_query.empty()) {
1472 next_url = net::AppendOrReplaceQueryParameter( 1494 next_url = net::AppendOrReplaceQueryParameter(
1473 next_url, "q", search_query); 1495 next_url, "q", search_query);
1474 } 1496 }
1475 if (!directory_resource_id.empty()) { 1497 if (!directory_resource_id.empty()) {
1476 next_url = net::AppendOrReplaceQueryParameter( 1498 next_url = net::AppendOrReplaceQueryParameter(
1477 next_url, "parent", directory_resource_id); 1499 next_url, "parent", directory_resource_id);
1478 } 1500 }
1479 1501
1480 Link* link = new Link; 1502 change_list->set_next_link(next_url);
1481 link->set_type(Link::LINK_NEXT);
1482 link->set_href(next_url);
1483 resource_list->mutable_links()->push_back(link);
1484 } 1503 }
1485 resource_list->set_entries(entries.Pass()); 1504 *change_list->mutable_items() = entries.Pass();
1486 1505
1487 if (load_counter) 1506 if (load_counter)
1488 *load_counter += 1; 1507 *load_counter += 1;
1489 base::MessageLoop::current()->PostTask( 1508 base::MessageLoop::current()->PostTask(
1490 FROM_HERE, 1509 FROM_HERE,
1491 base::Bind(callback, HTTP_SUCCESS, base::Passed(&resource_list))); 1510 base::Bind(callback, HTTP_SUCCESS, base::Passed(&change_list)));
1492 } 1511 }
1493 1512
1494 GURL FakeDriveService::GetNewUploadSessionUrl() { 1513 GURL FakeDriveService::GetNewUploadSessionUrl() {
1495 return GURL("https://upload_session_url/" + 1514 return GURL("https://upload_session_url/" +
1496 base::Int64ToString(next_upload_sequence_number_++)); 1515 base::Int64ToString(next_upload_sequence_number_++));
1497 } 1516 }
1498 1517
1499 google_apis::CancelCallback FakeDriveService::AddPermission( 1518 google_apis::CancelCallback FakeDriveService::AddPermission(
1500 const std::string& resource_id, 1519 const std::string& resource_id,
1501 const std::string& email, 1520 const std::string& email,
1502 google_apis::drive::PermissionRole role, 1521 google_apis::drive::PermissionRole role,
1503 const google_apis::EntryActionCallback& callback) { 1522 const google_apis::EntryActionCallback& callback) {
1504 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 1523 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1505 DCHECK(!callback.is_null()); 1524 DCHECK(!callback.is_null());
1506 1525
1507 NOTREACHED(); 1526 NOTREACHED();
1508 return CancelCallback(); 1527 return CancelCallback();
1509 } 1528 }
1510 1529
1511 } // namespace drive 1530 } // namespace drive
OLDNEW
« no previous file with comments | « chrome/browser/drive/fake_drive_service.h ('k') | chrome/browser/drive/fake_drive_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698