| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "components/offline_pages/offline_page_model.h" | 5 #include "components/offline_pages/offline_page_model.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | |
| 9 #include <algorithm> | 8 #include <algorithm> |
| 9 #include <utility> |
| 10 | 10 |
| 11 #include "base/bind.h" | 11 #include "base/bind.h" |
| 12 #include "base/files/file_util.h" | 12 #include "base/files/file_util.h" |
| 13 #include "base/files/scoped_temp_dir.h" | 13 #include "base/files/scoped_temp_dir.h" |
| 14 #include "base/run_loop.h" | 14 #include "base/run_loop.h" |
| 15 #include "base/single_thread_task_runner.h" | 15 #include "base/single_thread_task_runner.h" |
| 16 #include "base/strings/utf_string_conversions.h" | 16 #include "base/strings/utf_string_conversions.h" |
| 17 #include "base/test/test_mock_time_task_runner.h" | 17 #include "base/test/test_mock_time_task_runner.h" |
| 18 #include "base/thread_task_runner_handle.h" | 18 #include "base/thread_task_runner_handle.h" |
| 19 #include "base/time/time.h" | 19 #include "base/time/time.h" |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 131 last_save_result_(SavePageResult::CANCELLED), | 131 last_save_result_(SavePageResult::CANCELLED), |
| 132 last_delete_result_(DeletePageResult::CANCELLED), | 132 last_delete_result_(DeletePageResult::CANCELLED), |
| 133 last_deleted_bookmark_id_(-1) { | 133 last_deleted_bookmark_id_(-1) { |
| 134 } | 134 } |
| 135 | 135 |
| 136 OfflinePageModelTest::~OfflinePageModelTest() { | 136 OfflinePageModelTest::~OfflinePageModelTest() { |
| 137 } | 137 } |
| 138 | 138 |
| 139 void OfflinePageModelTest::SetUp() { | 139 void OfflinePageModelTest::SetUp() { |
| 140 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | 140 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
| 141 model_ = BuildModel(BuildStore().Pass()).Pass(); | 141 model_ = BuildModel(BuildStore()); |
| 142 model_->AddObserver(this); | 142 model_->AddObserver(this); |
| 143 PumpLoop(); | 143 PumpLoop(); |
| 144 } | 144 } |
| 145 | 145 |
| 146 void OfflinePageModelTest::TearDown() { | 146 void OfflinePageModelTest::TearDown() { |
| 147 model_->RemoveObserver(this); | 147 model_->RemoveObserver(this); |
| 148 model_.reset(); | 148 model_.reset(); |
| 149 PumpLoop(); | 149 PumpLoop(); |
| 150 } | 150 } |
| 151 | 151 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 190 } | 190 } |
| 191 | 191 |
| 192 scoped_ptr<OfflinePageMetadataStore> OfflinePageModelTest::BuildStore() { | 192 scoped_ptr<OfflinePageMetadataStore> OfflinePageModelTest::BuildStore() { |
| 193 return scoped_ptr<OfflinePageMetadataStore>( | 193 return scoped_ptr<OfflinePageMetadataStore>( |
| 194 new OfflinePageTestStore(base::ThreadTaskRunnerHandle::Get())); | 194 new OfflinePageTestStore(base::ThreadTaskRunnerHandle::Get())); |
| 195 } | 195 } |
| 196 | 196 |
| 197 scoped_ptr<OfflinePageModel> OfflinePageModelTest::BuildModel( | 197 scoped_ptr<OfflinePageModel> OfflinePageModelTest::BuildModel( |
| 198 scoped_ptr<OfflinePageMetadataStore> store) { | 198 scoped_ptr<OfflinePageMetadataStore> store) { |
| 199 return scoped_ptr<OfflinePageModel>(new OfflinePageModel( | 199 return scoped_ptr<OfflinePageModel>(new OfflinePageModel( |
| 200 store.Pass(), temp_dir_.path(), base::ThreadTaskRunnerHandle::Get())); | 200 std::move(store), temp_dir_.path(), base::ThreadTaskRunnerHandle::Get())); |
| 201 } | 201 } |
| 202 | 202 |
| 203 void OfflinePageModelTest::ResetModel() { | 203 void OfflinePageModelTest::ResetModel() { |
| 204 model_->RemoveObserver(this); | 204 model_->RemoveObserver(this); |
| 205 OfflinePageTestStore* old_store = GetStore(); | 205 OfflinePageTestStore* old_store = GetStore(); |
| 206 scoped_ptr<OfflinePageMetadataStore> new_store( | 206 scoped_ptr<OfflinePageMetadataStore> new_store( |
| 207 new OfflinePageTestStore(*old_store)); | 207 new OfflinePageTestStore(*old_store)); |
| 208 model_ = BuildModel(new_store.Pass()).Pass(); | 208 model_ = BuildModel(std::move(new_store)); |
| 209 model_->AddObserver(this); | 209 model_->AddObserver(this); |
| 210 PumpLoop(); | 210 PumpLoop(); |
| 211 } | 211 } |
| 212 | 212 |
| 213 void OfflinePageModelTest::PumpLoop() { | 213 void OfflinePageModelTest::PumpLoop() { |
| 214 task_runner_->RunUntilIdle(); | 214 task_runner_->RunUntilIdle(); |
| 215 } | 215 } |
| 216 | 216 |
| 217 void OfflinePageModelTest::FastForwardBy(base::TimeDelta delta) { | 217 void OfflinePageModelTest::FastForwardBy(base::TimeDelta delta) { |
| 218 task_runner_->FastForwardBy(delta); | 218 task_runner_->FastForwardBy(delta); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 232 SavePageWithArchiverResult( | 232 SavePageWithArchiverResult( |
| 233 url, | 233 url, |
| 234 bookmark_id, | 234 bookmark_id, |
| 235 OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED); | 235 OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED); |
| 236 } | 236 } |
| 237 | 237 |
| 238 void OfflinePageModelTest::SavePageWithArchiverResult( | 238 void OfflinePageModelTest::SavePageWithArchiverResult( |
| 239 const GURL& url, | 239 const GURL& url, |
| 240 int64_t bookmark_id, | 240 int64_t bookmark_id, |
| 241 OfflinePageArchiver::ArchiverResult result) { | 241 OfflinePageArchiver::ArchiverResult result) { |
| 242 scoped_ptr<OfflinePageTestArchiver> archiver( | 242 scoped_ptr<OfflinePageTestArchiver> archiver(BuildArchiver(url, result)); |
| 243 BuildArchiver(url, result).Pass()); | |
| 244 model()->SavePage( | 243 model()->SavePage( |
| 245 url, bookmark_id, archiver.Pass(), | 244 url, bookmark_id, std::move(archiver), |
| 246 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); | 245 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); |
| 247 PumpLoop(); | 246 PumpLoop(); |
| 248 } | 247 } |
| 249 | 248 |
| 250 TEST_F(OfflinePageModelTest, SavePageSuccessful) { | 249 TEST_F(OfflinePageModelTest, SavePageSuccessful) { |
| 251 EXPECT_FALSE(model()->HasOfflinePages()); | 250 EXPECT_FALSE(model()->HasOfflinePages()); |
| 252 SavePage(kTestUrl, kTestPageBookmarkId1); | 251 SavePage(kTestUrl, kTestPageBookmarkId1); |
| 253 EXPECT_TRUE(model()->HasOfflinePages()); | 252 EXPECT_TRUE(model()->HasOfflinePages()); |
| 254 | 253 |
| 255 OfflinePageTestStore* store = GetStore(); | 254 OfflinePageTestStore* store = GetStore(); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 301 SavePageWithArchiverResult( | 300 SavePageWithArchiverResult( |
| 302 kTestUrl, | 301 kTestUrl, |
| 303 kTestPageBookmarkId1, | 302 kTestPageBookmarkId1, |
| 304 OfflinePageArchiver::ArchiverResult::ERROR_ARCHIVE_CREATION_FAILED); | 303 OfflinePageArchiver::ArchiverResult::ERROR_ARCHIVE_CREATION_FAILED); |
| 305 EXPECT_EQ(SavePageResult::ARCHIVE_CREATION_FAILED, last_save_result()); | 304 EXPECT_EQ(SavePageResult::ARCHIVE_CREATION_FAILED, last_save_result()); |
| 306 } | 305 } |
| 307 | 306 |
| 308 TEST_F(OfflinePageModelTest, SavePageOfflineArchiverReturnedWrongUrl) { | 307 TEST_F(OfflinePageModelTest, SavePageOfflineArchiverReturnedWrongUrl) { |
| 309 scoped_ptr<OfflinePageTestArchiver> archiver( | 308 scoped_ptr<OfflinePageTestArchiver> archiver( |
| 310 BuildArchiver(GURL("http://other.random.url.com"), | 309 BuildArchiver(GURL("http://other.random.url.com"), |
| 311 OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED) | 310 OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED)); |
| 312 .Pass()); | |
| 313 model()->SavePage( | 311 model()->SavePage( |
| 314 kTestUrl, kTestPageBookmarkId1, archiver.Pass(), | 312 kTestUrl, kTestPageBookmarkId1, std::move(archiver), |
| 315 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); | 313 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); |
| 316 PumpLoop(); | 314 PumpLoop(); |
| 317 EXPECT_EQ(SavePageResult::ARCHIVE_CREATION_FAILED, last_save_result()); | 315 EXPECT_EQ(SavePageResult::ARCHIVE_CREATION_FAILED, last_save_result()); |
| 318 } | 316 } |
| 319 | 317 |
| 320 TEST_F(OfflinePageModelTest, SavePageOfflineCreationStoreWriteFailure) { | 318 TEST_F(OfflinePageModelTest, SavePageOfflineCreationStoreWriteFailure) { |
| 321 GetStore()->set_test_scenario( | 319 GetStore()->set_test_scenario( |
| 322 OfflinePageTestStore::TestScenario::WRITE_FAILED); | 320 OfflinePageTestStore::TestScenario::WRITE_FAILED); |
| 323 SavePage(kTestUrl, kTestPageBookmarkId1); | 321 SavePage(kTestUrl, kTestPageBookmarkId1); |
| 324 EXPECT_EQ(SavePageResult::STORE_FAILURE, last_save_result()); | 322 EXPECT_EQ(SavePageResult::STORE_FAILURE, last_save_result()); |
| 325 } | 323 } |
| 326 | 324 |
| 327 TEST_F(OfflinePageModelTest, SavePageLocalFileFailed) { | 325 TEST_F(OfflinePageModelTest, SavePageLocalFileFailed) { |
| 328 // Don't create archiver since it will not be needed for pages that are not | 326 // Don't create archiver since it will not be needed for pages that are not |
| 329 // going to be saved. | 327 // going to be saved. |
| 330 model()->SavePage( | 328 model()->SavePage( |
| 331 kFileUrl, kTestPageBookmarkId1, scoped_ptr<OfflinePageTestArchiver>(), | 329 kFileUrl, kTestPageBookmarkId1, scoped_ptr<OfflinePageTestArchiver>(), |
| 332 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); | 330 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); |
| 333 PumpLoop(); | 331 PumpLoop(); |
| 334 EXPECT_EQ(SavePageResult::SKIPPED, last_save_result()); | 332 EXPECT_EQ(SavePageResult::SKIPPED, last_save_result()); |
| 335 } | 333 } |
| 336 | 334 |
| 337 TEST_F(OfflinePageModelTest, SavePageOfflineArchiverTwoPages) { | 335 TEST_F(OfflinePageModelTest, SavePageOfflineArchiverTwoPages) { |
| 338 scoped_ptr<OfflinePageTestArchiver> archiver( | 336 scoped_ptr<OfflinePageTestArchiver> archiver(BuildArchiver( |
| 339 BuildArchiver(kTestUrl, | 337 kTestUrl, OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED)); |
| 340 OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED) | |
| 341 .Pass()); | |
| 342 // archiver_ptr will be valid until after first PumpLoop() call after | 338 // archiver_ptr will be valid until after first PumpLoop() call after |
| 343 // CompleteCreateArchive() is called. | 339 // CompleteCreateArchive() is called. |
| 344 OfflinePageTestArchiver* archiver_ptr = archiver.get(); | 340 OfflinePageTestArchiver* archiver_ptr = archiver.get(); |
| 345 archiver_ptr->set_delayed(true); | 341 archiver_ptr->set_delayed(true); |
| 346 model()->SavePage( | 342 model()->SavePage( |
| 347 kTestUrl, kTestPageBookmarkId1, archiver.Pass(), | 343 kTestUrl, kTestPageBookmarkId1, std::move(archiver), |
| 348 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); | 344 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); |
| 349 EXPECT_TRUE(archiver_ptr->create_archive_called()); | 345 EXPECT_TRUE(archiver_ptr->create_archive_called()); |
| 350 | 346 |
| 351 // Request to save another page. | 347 // Request to save another page. |
| 352 SavePage(kTestUrl2, kTestPageBookmarkId2); | 348 SavePage(kTestUrl2, kTestPageBookmarkId2); |
| 353 | 349 |
| 354 OfflinePageTestStore* store = GetStore(); | 350 OfflinePageTestStore* store = GetStore(); |
| 355 | 351 |
| 356 EXPECT_EQ(kTestUrl2, store->last_saved_page().url); | 352 EXPECT_EQ(kTestUrl2, store->last_saved_page().url); |
| 357 EXPECT_EQ(kTestPageBookmarkId2, store->last_saved_page().bookmark_id); | 353 EXPECT_EQ(kTestPageBookmarkId2, store->last_saved_page().bookmark_id); |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 432 model()->UndoPageDeletion(kTestPageBookmarkId1); | 428 model()->UndoPageDeletion(kTestPageBookmarkId1); |
| 433 PumpLoop(); | 429 PumpLoop(); |
| 434 | 430 |
| 435 // GetAllPages will now return the restored page. | 431 // GetAllPages will now return the restored page. |
| 436 const std::vector<OfflinePageItem>& offline_pages_after_undo = | 432 const std::vector<OfflinePageItem>& offline_pages_after_undo = |
| 437 model()->GetAllPages(); | 433 model()->GetAllPages(); |
| 438 EXPECT_EQ(1UL, offline_pages_after_undo.size()); | 434 EXPECT_EQ(1UL, offline_pages_after_undo.size()); |
| 439 } | 435 } |
| 440 | 436 |
| 441 TEST_F(OfflinePageModelTest, FinalizePageDeletion) { | 437 TEST_F(OfflinePageModelTest, FinalizePageDeletion) { |
| 442 scoped_ptr<OfflinePageTestArchiver> archiver( | 438 scoped_ptr<OfflinePageTestArchiver> archiver(BuildArchiver( |
| 443 BuildArchiver(kTestUrl, | 439 kTestUrl, OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED)); |
| 444 OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED) | |
| 445 .Pass()); | |
| 446 model()->SavePage( | 440 model()->SavePage( |
| 447 kTestUrl, kTestPageBookmarkId1, archiver.Pass(), | 441 kTestUrl, kTestPageBookmarkId1, std::move(archiver), |
| 448 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); | 442 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); |
| 449 PumpLoop(); | 443 PumpLoop(); |
| 450 | 444 |
| 451 // Mark the page for deletion. | 445 // Mark the page for deletion. |
| 452 model()->MarkPageForDeletion( | 446 model()->MarkPageForDeletion( |
| 453 kTestPageBookmarkId1, | 447 kTestPageBookmarkId1, |
| 454 base::Bind(&OfflinePageModelTest::OnDeletePageDone, AsWeakPtr())); | 448 base::Bind(&OfflinePageModelTest::OnDeletePageDone, AsWeakPtr())); |
| 455 PumpLoop(); | 449 PumpLoop(); |
| 456 | 450 |
| 457 EXPECT_EQ(1UL, GetStore()->GetAllPages().size()); | 451 EXPECT_EQ(1UL, GetStore()->GetAllPages().size()); |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 574 PumpLoop(); | 568 PumpLoop(); |
| 575 | 569 |
| 576 EXPECT_EQ(last_deleted_bookmark_id(), kTestPageBookmarkId1); | 570 EXPECT_EQ(last_deleted_bookmark_id(), kTestPageBookmarkId1); |
| 577 EXPECT_EQ(0UL, model()->GetAllPages().size()); | 571 EXPECT_EQ(0UL, model()->GetAllPages().size()); |
| 578 } | 572 } |
| 579 | 573 |
| 580 TEST_F(OfflinePageModelTest, DeleteMultiplePages) { | 574 TEST_F(OfflinePageModelTest, DeleteMultiplePages) { |
| 581 OfflinePageTestStore* store = GetStore(); | 575 OfflinePageTestStore* store = GetStore(); |
| 582 | 576 |
| 583 // Save 3 pages. | 577 // Save 3 pages. |
| 584 scoped_ptr<OfflinePageTestArchiver> archiver( | 578 scoped_ptr<OfflinePageTestArchiver> archiver(BuildArchiver( |
| 585 BuildArchiver(kTestUrl, | 579 kTestUrl, OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED)); |
| 586 OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED) | |
| 587 .Pass()); | |
| 588 model()->SavePage( | 580 model()->SavePage( |
| 589 kTestUrl, kTestPageBookmarkId1, archiver.Pass(), | 581 kTestUrl, kTestPageBookmarkId1, std::move(archiver), |
| 590 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); | 582 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); |
| 591 PumpLoop(); | 583 PumpLoop(); |
| 592 | 584 |
| 593 scoped_ptr<OfflinePageTestArchiver> archiver2( | 585 scoped_ptr<OfflinePageTestArchiver> archiver2(BuildArchiver( |
| 594 BuildArchiver(kTestUrl2, | 586 kTestUrl2, OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED)); |
| 595 OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED) | |
| 596 .Pass()); | |
| 597 model()->SavePage( | 587 model()->SavePage( |
| 598 kTestUrl2, kTestPageBookmarkId2, archiver2.Pass(), | 588 kTestUrl2, kTestPageBookmarkId2, std::move(archiver2), |
| 599 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); | 589 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); |
| 600 PumpLoop(); | 590 PumpLoop(); |
| 601 | 591 |
| 602 scoped_ptr<OfflinePageTestArchiver> archiver3( | 592 scoped_ptr<OfflinePageTestArchiver> archiver3(BuildArchiver( |
| 603 BuildArchiver(kTestUrl3, | 593 kTestUrl3, OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED)); |
| 604 OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED) | |
| 605 .Pass()); | |
| 606 model()->SavePage( | 594 model()->SavePage( |
| 607 kTestUrl3, kTestPageBookmarkId3, archiver3.Pass(), | 595 kTestUrl3, kTestPageBookmarkId3, std::move(archiver3), |
| 608 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); | 596 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); |
| 609 PumpLoop(); | 597 PumpLoop(); |
| 610 | 598 |
| 611 EXPECT_EQ(3u, store->GetAllPages().size()); | 599 EXPECT_EQ(3u, store->GetAllPages().size()); |
| 612 | 600 |
| 613 // Delete multiple pages. | 601 // Delete multiple pages. |
| 614 std::vector<int64_t> ids_to_delete; | 602 std::vector<int64_t> ids_to_delete; |
| 615 ids_to_delete.push_back(kTestPageBookmarkId2); | 603 ids_to_delete.push_back(kTestPageBookmarkId2); |
| 616 ids_to_delete.push_back(kTestPageBookmarkId1); | 604 ids_to_delete.push_back(kTestPageBookmarkId1); |
| 617 ids_to_delete.push_back(23434LL); // Non-existent ID. | 605 ids_to_delete.push_back(23434LL); // Non-existent ID. |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 810 bookmark_undo_provider_ = provider; | 798 bookmark_undo_provider_ = provider; |
| 811 } | 799 } |
| 812 | 800 |
| 813 void OfflinePageModelBookmarkChangeTest::OnBookmarkNodeRemoved( | 801 void OfflinePageModelBookmarkChangeTest::OnBookmarkNodeRemoved( |
| 814 bookmarks::BookmarkModel* model, | 802 bookmarks::BookmarkModel* model, |
| 815 const bookmarks::BookmarkNode* parent, | 803 const bookmarks::BookmarkNode* parent, |
| 816 int index, | 804 int index, |
| 817 scoped_ptr<bookmarks::BookmarkNode> node) { | 805 scoped_ptr<bookmarks::BookmarkNode> node) { |
| 818 removed_bookmark_parent_ = parent; | 806 removed_bookmark_parent_ = parent; |
| 819 removed_bookmark_index_ = index; | 807 removed_bookmark_index_ = index; |
| 820 removed_bookmark_node_ = node.Pass(); | 808 removed_bookmark_node_ = std::move(node); |
| 821 } | 809 } |
| 822 | 810 |
| 823 const bookmarks::BookmarkNode* | 811 const bookmarks::BookmarkNode* |
| 824 OfflinePageModelBookmarkChangeTest::CreateBookmarkNode(const GURL& url) { | 812 OfflinePageModelBookmarkChangeTest::CreateBookmarkNode(const GURL& url) { |
| 825 const bookmarks::BookmarkNode* bookmark_root = | 813 const bookmarks::BookmarkNode* bookmark_root = |
| 826 bookmark_model()->bookmark_bar_node(); | 814 bookmark_model()->bookmark_bar_node(); |
| 827 return bookmark_model()->AddURL(bookmark_root, 0, base::string16(), url); | 815 return bookmark_model()->AddURL(bookmark_root, 0, base::string16(), url); |
| 828 } | 816 } |
| 829 | 817 |
| 830 void OfflinePageModelBookmarkChangeTest::UndoBookmarkRemoval() { | 818 void OfflinePageModelBookmarkChangeTest::UndoBookmarkRemoval() { |
| 831 bookmark_undo_provider_->RestoreRemovedNode(removed_bookmark_parent_, | 819 bookmark_undo_provider_->RestoreRemovedNode( |
| 832 removed_bookmark_index_, | 820 removed_bookmark_parent_, removed_bookmark_index_, |
| 833 removed_bookmark_node_.Pass()); | 821 std::move(removed_bookmark_node_)); |
| 834 removed_bookmark_parent_ = nullptr; | 822 removed_bookmark_parent_ = nullptr; |
| 835 removed_bookmark_index_ = -1; | 823 removed_bookmark_index_ = -1; |
| 836 } | 824 } |
| 837 | 825 |
| 838 TEST_F(OfflinePageModelBookmarkChangeTest, ChangeBookmakeTitle) { | 826 TEST_F(OfflinePageModelBookmarkChangeTest, ChangeBookmakeTitle) { |
| 839 // Creates a bookmark without offline copy. | 827 // Creates a bookmark without offline copy. |
| 840 const bookmarks::BookmarkNode* bookmark_node = CreateBookmarkNode(kTestUrl); | 828 const bookmarks::BookmarkNode* bookmark_node = CreateBookmarkNode(kTestUrl); |
| 841 EXPECT_EQ(0UL, model()->GetAllPages().size()); | 829 EXPECT_EQ(0UL, model()->GetAllPages().size()); |
| 842 | 830 |
| 843 // Changing the bookmark title should have no effect. | 831 // Changing the bookmark title should have no effect. |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 925 PumpLoop(); | 913 PumpLoop(); |
| 926 EXPECT_EQ(0UL, model()->GetAllPages().size()); | 914 EXPECT_EQ(0UL, model()->GetAllPages().size()); |
| 927 | 915 |
| 928 // The offline copy should be restored upon the bookmark restore. | 916 // The offline copy should be restored upon the bookmark restore. |
| 929 UndoBookmarkRemoval(); | 917 UndoBookmarkRemoval(); |
| 930 PumpLoop(); | 918 PumpLoop(); |
| 931 EXPECT_EQ(1UL, model()->GetAllPages().size()); | 919 EXPECT_EQ(1UL, model()->GetAllPages().size()); |
| 932 } | 920 } |
| 933 | 921 |
| 934 } // namespace offline_pages | 922 } // namespace offline_pages |
| OLD | NEW |