Index: chrome/browser/printing/print_job_unittest.cc |
=================================================================== |
--- chrome/browser/printing/print_job_unittest.cc (revision 0) |
+++ chrome/browser/printing/print_job_unittest.cc (revision 0) |
@@ -0,0 +1,117 @@ |
+// Copyright (c) 2008 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "base/message_loop.h" |
+#include "chrome/browser/printing/print_job.h" |
+#include "chrome/browser/printing/printed_pages_source.h" |
+#include "googleurl/src/gurl.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace { |
+ |
+class TestSource : public printing::PrintedPagesSource { |
+ public: |
+ virtual void RenderOnePrintedPage(printing::PrintedDocument* document, |
+ int page_number) { |
+ } |
+ virtual std::wstring RenderSourceName() { |
+ return L""; |
+ } |
+ virtual GURL RenderSourceUrl() { |
+ return GURL(); |
+ } |
+}; |
+ |
+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() { |
+ *check_ = true; |
+ } |
+ private: |
+ volatile bool* check_; |
+}; |
+ |
+class TestPrintNotifObserv : public NotificationObserver { |
+ public: |
+ // NotificationObserver |
+ virtual void Observe(NotificationType type, |
+ const NotificationSource& source, |
+ const NotificationDetails& details) { |
+ ASSERT_EQ(NOTIFY_PRINT_JOB_EVENT, type); |
+ 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; |
+ } |
+ } |
+}; |
+ |
+} // namespace |
+ |
+TEST(PrintJobTest, SimplePrint) { |
+ // Test the multithreaded nature of PrintJob to make sure we can use it with |
+ // known livetime. |
+ TestPrintNotifObserv observ; |
+ MessageLoop current; |
+ NotificationService::current()->AddObserver( |
+ &observ, NOTIFY_ALL, |
+ NotificationService::AllSources()); |
+ TestSource source; |
+ volatile bool check = false; |
+ scoped_refptr<printing::PrintJob> job(new TestPrintJob(&source, &check)); |
+ job->GetSettings(printing::PrintJob::DEFAULTS, NULL); |
+ EXPECT_EQ(MessageLoop::current(), job->message_loop()); |
+ current.Run(); |
+ job->Stop(); |
+ job = NULL; |
+ EXPECT_TRUE(check); |
+} |
+ |
+TEST(PrintJobTest, SimplePrintLateInit) { |
+ volatile bool check = false; |
+ MessageLoop current; |
+ scoped_refptr<printing::PrintJob> job(new TestPrintJob(&check)); |
+ job = NULL; |
+ EXPECT_TRUE(check); |
+ /* TODO(maruel): Test these. |
+ job->Initialize() |
+ job->Observe(); |
+ job->GetSettingsDone(); |
+ job->DetachWorker(); |
+ job->message_loop(); |
+ job->settings(); |
+ job->cookie(); |
+ job->GetSettings(printing::DEFAULTS, printing::ASK_USER, NULL); |
+ job->StartPrinting(); |
+ job->Stop(); |
+ job->Cancel(); |
+ job->RequestMissingPages(); |
+ job->FlushJob(timeout_ms); |
+ job->DisconnectSource(); |
+ job->is_job_pending(); |
+ job->is_print_dialog_box_shown(); |
+ job->document(); |
+ // Private |
+ job->UpdatePrintedDocument(NULL); |
+ scoped_refptr<printing::JobEventDetails> event_details; |
+ job->OnNotifyPrintJobEvent(event_details); |
+ job->OnDocumentDone(); |
+ job->ControlledWorkerShutdown(); |
+ */ |
+} |
Property changes on: chrome\browser\printing\print_job_unittest.cc |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |