| Index: chrome/browser/printing/print_job_unittest.cc
|
| ===================================================================
|
| --- chrome/browser/printing/print_job_unittest.cc (revision 9138)
|
| +++ chrome/browser/printing/print_job_unittest.cc (working copy)
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "base/message_loop.h"
|
| #include "chrome/browser/printing/print_job.h"
|
| +#include "chrome/browser/printing/print_job_worker.h"
|
| #include "chrome/browser/printing/printed_pages_source.h"
|
| #include "chrome/common/notification_service.h"
|
| #include "googleurl/src/gurl.h"
|
| @@ -13,9 +14,6 @@
|
|
|
| class TestSource : public printing::PrintedPagesSource {
|
| public:
|
| - virtual void RenderOnePrintedPage(printing::PrintedDocument* document,
|
| - int page_number) {
|
| - }
|
| virtual std::wstring RenderSourceName() {
|
| return L"";
|
| }
|
| @@ -24,11 +22,52 @@
|
| }
|
| };
|
|
|
| +class TestPrintJobWorker : public printing::PrintJobWorker {
|
| + public:
|
| + explicit TestPrintJobWorker(printing::PrintJobWorkerOwner* owner)
|
| + : printing::PrintJobWorker(owner) {
|
| + }
|
| + friend class TestOwner;
|
| +};
|
| +
|
| +class TestOwner : public printing::PrintJobWorkerOwner {
|
| + public:
|
| + virtual void AddRef() {
|
| + EXPECT_FALSE(true);
|
| + }
|
| + virtual void Release() {
|
| + EXPECT_FALSE(true);
|
| + }
|
| + virtual void GetSettingsDone(const printing::PrintSettings& new_settings,
|
| + printing::PrintingContext::Result result) {
|
| + EXPECT_FALSE(true);
|
| + }
|
| + virtual printing::PrintJobWorker* DetachWorker(
|
| + printing::PrintJobWorkerOwner* new_owner) {
|
| + // We're screwing up here since we're calling worker from the main thread.
|
| + // That's fine for testing. It is actually simulating PrinterQuery behavior.
|
| + TestPrintJobWorker* worker(new TestPrintJobWorker(new_owner));
|
| + EXPECT_TRUE(worker->Start());
|
| + worker->printing_context().UseDefaultSettings();
|
| + settings_ = worker->printing_context().settings();
|
| + return worker;
|
| + }
|
| + virtual MessageLoop* message_loop() {
|
| + EXPECT_FALSE(true);
|
| + return NULL;
|
| + }
|
| + virtual const printing::PrintSettings& settings() const {
|
| + return settings_;
|
| + }
|
| + virtual int cookie() const {
|
| + return 42;
|
| + }
|
| + private:
|
| + printing::PrintSettings settings_;
|
| +};
|
| +
|
| class TestPrintJob : public printing::PrintJob {
|
| public:
|
| - TestPrintJob(printing::PrintedPagesSource* source, volatile bool* check)
|
| - : printing::PrintJob(source), check_(check) {
|
| - }
|
| TestPrintJob(volatile bool* check) : check_(check) {
|
| }
|
| ~TestPrintJob() {
|
| @@ -44,22 +83,7 @@
|
| virtual void Observe(NotificationType type,
|
| const NotificationSource& source,
|
| const NotificationDetails& details) {
|
| - ASSERT_EQ(NotificationType::PRINT_JOB_EVENT, type.value);
|
| - printing::JobEventDetails::Type event_type =
|
| - Details<printing::JobEventDetails>(details)->type();
|
| - EXPECT_NE(printing::JobEventDetails::NEW_DOC, event_type);
|
| - EXPECT_NE(printing::JobEventDetails::NEW_PAGE, event_type);
|
| - EXPECT_NE(printing::JobEventDetails::PAGE_DONE, event_type);
|
| - EXPECT_NE(printing::JobEventDetails::DOC_DONE, event_type);
|
| - EXPECT_NE(printing::JobEventDetails::JOB_DONE, event_type);
|
| - EXPECT_NE(printing::JobEventDetails::ALL_PAGES_REQUESTED, event_type);
|
| - if (event_type == printing::JobEventDetails::USER_INIT_DONE ||
|
| - event_type == printing::JobEventDetails::USER_INIT_CANCELED ||
|
| - event_type == printing::JobEventDetails::DEFAULT_INIT_DONE ||
|
| - event_type == printing::JobEventDetails::FAILED) {
|
| - MessageLoop::current()->Quit();
|
| - return;
|
| - }
|
| + EXPECT_FALSE(true);
|
| }
|
| };
|
|
|
| @@ -68,17 +92,20 @@
|
| TEST(PrintJobTest, SimplePrint) {
|
| // Test the multithreaded nature of PrintJob to make sure we can use it with
|
| // known livetime.
|
| +
|
| + // This message loop is actually never run.
|
| + MessageLoop current;
|
| +
|
| TestPrintNotifObserv observ;
|
| - MessageLoop current;
|
| NotificationService::current()->AddObserver(
|
| &observ, NotificationType::ALL,
|
| NotificationService::AllSources());
|
| - TestSource source;
|
| volatile bool check = false;
|
| - scoped_refptr<printing::PrintJob> job(new TestPrintJob(&source, &check));
|
| - job->GetSettings(printing::PrintJob::DEFAULTS, NULL);
|
| + scoped_refptr<printing::PrintJob> job(new TestPrintJob(&check));
|
| EXPECT_EQ(MessageLoop::current(), job->message_loop());
|
| - current.Run();
|
| + TestOwner owner;
|
| + TestSource source;
|
| + job->Initialize(&owner, &source);
|
| job->Stop();
|
| job = NULL;
|
| EXPECT_TRUE(check);
|
|
|