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

Unified Diff: components/dom_distiller/core/task_tracker_unittest.cc

Issue 189833002: Add a DistilledContentStore (and an in-memory impl) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: components/dom_distiller/core/task_tracker_unittest.cc
diff --git a/components/dom_distiller/core/task_tracker_unittest.cc b/components/dom_distiller/core/task_tracker_unittest.cc
index c6eef4be519782dfc74428bac361d5c1e2a83e75..db8646dcdfd57d2421436b133c107fbabe632fd7 100644
--- a/components/dom_distiller/core/task_tracker_unittest.cc
+++ b/components/dom_distiller/core/task_tracker_unittest.cc
@@ -7,6 +7,7 @@
#include "base/run_loop.h"
#include "components/dom_distiller/core/article_distillation_update.h"
#include "components/dom_distiller/core/article_entry.h"
+#include "components/dom_distiller/core/distilled_content_store.h"
#include "components/dom_distiller/core/fake_distiller.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -73,7 +74,8 @@ class DomDistillerTaskTrackerTest : public testing::Test {
TEST_F(DomDistillerTaskTrackerTest, TestHasEntryId) {
MockDistillerFactory distiller_factory;
TestCancelCallback cancel_callback;
- TaskTracker task_tracker(GetDefaultEntry(), cancel_callback.GetCallback());
+ TaskTracker task_tracker(
+ GetDefaultEntry(), cancel_callback.GetCallback(), NULL);
EXPECT_TRUE(task_tracker.HasEntryId(entry_id_));
EXPECT_FALSE(task_tracker.HasEntryId("other_id"));
}
@@ -81,7 +83,8 @@ TEST_F(DomDistillerTaskTrackerTest, TestHasEntryId) {
TEST_F(DomDistillerTaskTrackerTest, TestHasUrl) {
MockDistillerFactory distiller_factory;
TestCancelCallback cancel_callback;
- TaskTracker task_tracker(GetDefaultEntry(), cancel_callback.GetCallback());
+ TaskTracker task_tracker(
+ GetDefaultEntry(), cancel_callback.GetCallback(), NULL);
EXPECT_TRUE(task_tracker.HasUrl(page_0_url_));
EXPECT_TRUE(task_tracker.HasUrl(page_1_url_));
EXPECT_FALSE(task_tracker.HasUrl(GURL("http://other.url/")));
@@ -90,7 +93,8 @@ TEST_F(DomDistillerTaskTrackerTest, TestHasUrl) {
TEST_F(DomDistillerTaskTrackerTest, TestViewerCancelled) {
MockDistillerFactory distiller_factory;
TestCancelCallback cancel_callback;
- TaskTracker task_tracker(GetDefaultEntry(), cancel_callback.GetCallback());
+ TaskTracker task_tracker(
+ GetDefaultEntry(), cancel_callback.GetCallback(), NULL);
FakeViewRequestDelegate viewer_delegate;
FakeViewRequestDelegate viewer_delegate2;
@@ -107,7 +111,8 @@ TEST_F(DomDistillerTaskTrackerTest, TestViewerCancelled) {
TEST_F(DomDistillerTaskTrackerTest, TestViewerCancelledWithSaveRequest) {
MockDistillerFactory distiller_factory;
TestCancelCallback cancel_callback;
- TaskTracker task_tracker(GetDefaultEntry(), cancel_callback.GetCallback());
+ TaskTracker task_tracker(
+ GetDefaultEntry(), cancel_callback.GetCallback(), NULL);
FakeViewRequestDelegate viewer_delegate;
scoped_ptr<ViewerHandle> handle(task_tracker.AddViewer(&viewer_delegate));
@@ -128,7 +133,8 @@ TEST_F(DomDistillerTaskTrackerTest, TestViewerNotifiedOnDistillationComplete) {
EXPECT_CALL(distiller_factory, CreateDistillerImpl())
.WillOnce(Return(distiller));
TestCancelCallback cancel_callback;
- TaskTracker task_tracker(GetDefaultEntry(), cancel_callback.GetCallback());
+ TaskTracker task_tracker(
+ GetDefaultEntry(), cancel_callback.GetCallback(), NULL);
FakeViewRequestDelegate viewer_delegate;
scoped_ptr<ViewerHandle> handle(task_tracker.AddViewer(&viewer_delegate));
@@ -149,7 +155,8 @@ TEST_F(DomDistillerTaskTrackerTest,
EXPECT_CALL(distiller_factory, CreateDistillerImpl())
.WillOnce(Return(distiller));
TestCancelCallback cancel_callback;
- TaskTracker task_tracker(GetDefaultEntry(), cancel_callback.GetCallback());
+ TaskTracker task_tracker(
+ GetDefaultEntry(), cancel_callback.GetCallback(), NULL);
MockSaveCallback save_callback;
task_tracker.AddSaveCallback(
@@ -164,5 +171,119 @@ TEST_F(DomDistillerTaskTrackerTest,
EXPECT_TRUE(cancel_callback.Cancelled());
}
+DistilledArticleProto CreateDistilledArticleForEntry(
+ const ArticleEntry& entry) {
+ DistilledArticleProto article;
+ for (int i = 0; i < entry.pages_size(); ++i) {
+ DistilledPageProto* page = article.add_pages();
+ page->set_url(entry.pages(i).url());
+ page->set_html("<div>" + entry.pages(i).url() + "</div>");
+ }
+ return article;
+}
+
+TEST_F(DomDistillerTaskTrackerTest, TestBlobFetcher) {
+ ArticleEntry entry_with_blob = GetDefaultEntry();
+ DistilledArticleProto stored_distilled_article =
+ CreateDistilledArticleForEntry(entry_with_blob);
+ InMemoryContentStore content_store;
+ content_store.InjectContent(entry_with_blob, stored_distilled_article);
+ TestCancelCallback cancel_callback;
+
+ TaskTracker task_tracker(
+ entry_with_blob, cancel_callback.GetCallback(), &content_store);
+
+ FakeViewRequestDelegate viewer_delegate;
+ scoped_ptr<ViewerHandle> handle(task_tracker.AddViewer(&viewer_delegate));
+ base::RunLoop().RunUntilIdle();
+
+ const DistilledArticleProto* distilled_article;
+
+ EXPECT_CALL(viewer_delegate, OnArticleReady(_))
+ .WillOnce(testing::SaveArg<0>(&distilled_article));
+
+ task_tracker.StartBlobFetcher();
+ base::RunLoop().RunUntilIdle();
+
+ EXPECT_EQ(stored_distilled_article.SerializeAsString(),
+ distilled_article->SerializeAsString());
+
+ EXPECT_FALSE(cancel_callback.Cancelled());
+}
+
+TEST_F(DomDistillerTaskTrackerTest, TestBlobFetcherFinishesFirst) {
+ MockDistillerFactory distiller_factory;
+ FakeDistiller* distiller = new FakeDistiller(false);
+ EXPECT_CALL(distiller_factory, CreateDistillerImpl())
+ .WillOnce(Return(distiller));
+
+ ArticleEntry entry_with_blob = GetDefaultEntry();
+ DistilledArticleProto stored_distilled_article =
+ CreateDistilledArticleForEntry(entry_with_blob);
+ InMemoryContentStore content_store;
+ content_store.InjectContent(entry_with_blob, stored_distilled_article);
+ TestCancelCallback cancel_callback;
+ TaskTracker task_tracker(
+ entry_with_blob, cancel_callback.GetCallback(), &content_store);
+
+ FakeViewRequestDelegate viewer_delegate;
+ scoped_ptr<ViewerHandle> handle(task_tracker.AddViewer(&viewer_delegate));
+ base::RunLoop().RunUntilIdle();
+
+ const DistilledArticleProto* distilled_article;
+
+ EXPECT_CALL(viewer_delegate, OnArticleReady(_))
+ .WillOnce(testing::SaveArg<0>(&distilled_article));
+
+ task_tracker.StartDistiller(&distiller_factory);
+ task_tracker.StartBlobFetcher();
+ base::RunLoop().RunUntilIdle();
+
+ testing::Mock::VerifyAndClearExpectations(&viewer_delegate);
+ EXPECT_EQ(stored_distilled_article.SerializeAsString(),
+ distilled_article->SerializeAsString());
+
+ distiller->RunDistillerCallback(
+ scoped_ptr<DistilledArticleProto>(new DistilledArticleProto));
+
+ EXPECT_FALSE(cancel_callback.Cancelled());
+
+ base::RunLoop().RunUntilIdle();
+}
+
+TEST_F(DomDistillerTaskTrackerTest, TestBlobFetcherWithoutBlob) {
+ MockDistillerFactory distiller_factory;
+ FakeDistiller* distiller = new FakeDistiller(false);
+ EXPECT_CALL(distiller_factory, CreateDistillerImpl())
+ .WillOnce(Return(distiller));
+
+ ArticleEntry entry(GetDefaultEntry());
+ InMemoryContentStore content_store;
+ scoped_ptr<DistilledArticleProto> distilled_article(
+ new DistilledArticleProto(CreateDistilledArticleForEntry(entry)));
+
+ TestCancelCallback cancel_callback;
+ TaskTracker task_tracker(
+ GetDefaultEntry(), cancel_callback.GetCallback(), &content_store);
+
+ FakeViewRequestDelegate viewer_delegate;
+ scoped_ptr<ViewerHandle> handle(task_tracker.AddViewer(&viewer_delegate));
+ base::RunLoop().RunUntilIdle();
+
+ task_tracker.StartBlobFetcher();
+ task_tracker.StartDistiller(&distiller_factory);
+
+ // OnArticleReady shouldn't be called until distillation finishes (i.e. the
+ // blob fetcher shouldn't return distilled content).
+ EXPECT_CALL(viewer_delegate, OnArticleReady(_)).Times(0);
+ base::RunLoop().RunUntilIdle();
+
+ EXPECT_CALL(viewer_delegate, OnArticleReady(_));
+ distiller->RunDistillerCallback(distilled_article.Pass());
+ base::RunLoop().RunUntilIdle();
+
+ EXPECT_FALSE(cancel_callback.Cancelled());
+}
+
} // namespace test
} // namespace dom_distiller

Powered by Google App Engine
This is Rietveld 408576698