Chromium Code Reviews| Index: chrome/browser/history/android/android_provider_backend.cc |
| diff --git a/chrome/browser/history/android/android_provider_backend.cc b/chrome/browser/history/android/android_provider_backend.cc |
| index 9f2d9255e489dd7e1ef01527f5231f564ad7ccc1..a0c6ff5b9f35ca051e36834e384e7999201a50ec 100644 |
| --- a/chrome/browser/history/android/android_provider_backend.cc |
| +++ b/chrome/browser/history/android/android_provider_backend.cc |
| @@ -176,7 +176,7 @@ AndroidURLID AndroidProviderBackend::InsertHistoryAndBookmark( |
| ScopedTransaction transaction(history_db_, thumbnail_db_); |
| - AndroidURLID id = InsertHistoryAndBookmark(values, ¬ifications); |
| + AndroidURLID id = InsertHistoryAndBookmark(values, ¬ifications, true); |
| if (id) { |
| transaction.Commit(); |
| BroadcastNotifications(notifications); |
| @@ -357,11 +357,12 @@ bool AndroidProviderBackend::UpdateHistoryAndBookmarks( |
| AndroidURLID AndroidProviderBackend::InsertHistoryAndBookmark( |
| const HistoryAndBookmarkRow& values, |
| - HistoryNotifications* notifications) { |
| + HistoryNotifications* notifications, |
| + bool update_tables) { |
| if (!IsHistoryAndBookmarkRowValid(values)) |
| return false; |
| - if (!EnsureInitializedAndUpdated()) |
| + if (update_tables && !EnsureInitializedAndUpdated()) |
| return 0; |
| DCHECK(values.is_value_set_explicitly(HistoryAndBookmarkRow::URL)); |
| @@ -471,10 +472,13 @@ bool AndroidProviderBackend::DeleteHistory( |
| for (std::vector<HistoryAndBookmarkRow>::const_iterator i = bookmarks.begin(); |
| i != bookmarks.end(); ++i) { |
| - if (!InsertHistoryAndBookmark(*i, notifications)) |
| + // Don't update the tables, otherwise, the bookmarks will be added to |
| + // database during UpdateBookmark(), then the insertion will fail. |
| + // We can't rely on UpdateBookmark() to insert the bookmarks into history |
| + // database as the raw_url will be lost. |
| + if (!InsertHistoryAndBookmark(*i, notifications, false)) |
| return false; |
| } |
| - |
| return true; |
| } |
| @@ -759,11 +763,21 @@ bool AndroidProviderBackend::UpdateBookmarks() { |
| for (std::vector<BookmarkService::URLAndTitle>::const_iterator i = |
| bookmarks.begin(); i != bookmarks.end(); ++i) { |
| URLID url_id = history_db_->GetRowForURL(i->url, NULL); |
| - if (url_id == 0) |
| - // TODO(michaelbai): Add a row to url and android_url table as the |
| - // bookmark could be added manually by user or insertted by sync. |
| - continue; |
| - |
| + if (url_id == 0) { |
| + URLRow url_row(i->url); |
| + url_row.set_title(i->title); |
| + url_row.set_last_visit(Time::UnixEpoch()); |
|
sky
2012/08/07 18:31:43
You sure you don't want a time of now? And do you
michaelbai
2012/08/07 19:21:32
- Set the time to Time::UnixEpoch() consistent wit
sky
2012/08/07 20:43:08
Add a comment why then.
|
| + url_id = history_db_->AddURL(url_row); |
| + if (url_id == 0) { |
| + LOG(ERROR) << "Can not add url for the new bookmark"; |
| + return false; |
| + } |
| + if (!history_db_->AddAndroidURLRow(i->url.spec(), url_id)) |
| + return false; |
| + if (!history_db_->AddBookmarkCacheRow(Time::UnixEpoch(), |
| + Time::UnixEpoch(), url_id)) |
| + return false; |
| + } |
| url_ids.push_back(url_id); |
| } |