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

Unified Diff: chrome/browser/ui/webui/print_preview/extension_printer_handler_unittest.cc

Issue 973993003: Instead of ArrayBuffer, pass blob with printerProvider.onPrintRequested (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase & add ext fun histogram Created 5 years, 10 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: chrome/browser/ui/webui/print_preview/extension_printer_handler_unittest.cc
diff --git a/chrome/browser/ui/webui/print_preview/extension_printer_handler_unittest.cc b/chrome/browser/ui/webui/print_preview/extension_printer_handler_unittest.cc
index 785b2a63524f60aa708a10d1658cb52c24f3506a..b87fa842e3159f68e2b6bafe8655fc49677b32c5 100644
--- a/chrome/browser/ui/webui/print_preview/extension_printer_handler_unittest.cc
+++ b/chrome/browser/ui/webui/print_preview/extension_printer_handler_unittest.cc
@@ -115,9 +115,6 @@ const char kPrintTicketWithDuplex[] =
" }"
"}";
-// Suffix appended to document data by fake PWGRasterConverter.
-const char kPWGConversionSuffix[] = "_converted";
-
const char kContentTypePDF[] = "application/pdf";
const char kContentTypePWG[] = "image/pwg-raster";
@@ -193,14 +190,18 @@ scoped_ptr<base::DictionaryValue> GetJSONAsDictionaryValue(
return scoped_ptr<base::DictionaryValue>(dictionary->DeepCopy());
}
+std::string RefCountedMemoryToString(
+ const scoped_refptr<base::RefCountedMemory>& memory) {
+ return std::string(memory->front_as<char>(), memory->size());
+}
+
// Fake PWGRasterconverter used in the tests.
class FakePWGRasterConverter : public PWGRasterConverter {
public:
FakePWGRasterConverter() : fail_conversion_(false), initialized_(false) {}
~FakePWGRasterConverter() override = default;
- // PWGRasterConverter implementation.
- // It writes |data| to a temp file, appending it |kPWGConversionSuffix|.
+ // PWGRasterConverter implementation. It writes |data| to a temp file.
// Also, remembers conversion and bitmap settings passed into the method.
void Start(base::RefCountedMemory* data,
const printing::PdfRenderSettings& conversion_settings,
@@ -219,10 +220,9 @@ class FakePWGRasterConverter : public PWGRasterConverter {
initialized_ = true;
+ path_ = temp_dir_.path().AppendASCII("output.pwg");
std::string data_str(data->front_as<char>(), data->size());
- data_str.append(kPWGConversionSuffix);
- base::FilePath target_path = temp_dir_.path().AppendASCII("output.pwg");
- int written = WriteFile(target_path, data_str.c_str(), data_str.size());
+ int written = WriteFile(path_, data_str.c_str(), data_str.size());
if (written != static_cast<int>(data_str.size())) {
ADD_FAILURE() << "Failed to write pwg raster file.";
callback.Run(false, base::FilePath());
@@ -232,12 +232,13 @@ class FakePWGRasterConverter : public PWGRasterConverter {
conversion_settings_ = conversion_settings;
bitmap_settings_ = bitmap_settings;
- callback.Run(true, target_path);
+ callback.Run(true, path_);
}
// Makes |Start| method always return an error.
void FailConversion() { fail_conversion_ = true; }
+ const base::FilePath& path() { return path_; }
const printing::PdfRenderSettings& conversion_settings() const {
return conversion_settings_;
}
@@ -249,6 +250,7 @@ class FakePWGRasterConverter : public PWGRasterConverter {
private:
base::ScopedTempDir temp_dir_;
+ base::FilePath path_;
printing::PdfRenderSettings conversion_settings_;
printing::PwgRasterSettings bitmap_settings_;
bool fail_conversion_;
@@ -257,18 +259,10 @@ class FakePWGRasterConverter : public PWGRasterConverter {
DISALLOW_COPY_AND_ASSIGN(FakePWGRasterConverter);
};
-// Copy of data contained in print job passed to |DispatchPrintRequested|.
-struct PrintJobParams {
- std::string printer_id;
- std::string ticket;
- std::string content_type;
- std::string document;
-};
-
// Information about received print requests.
struct PrintRequestInfo {
PrinterProviderAPI::PrintCallback callback;
- PrintJobParams params;
+ PrinterProviderPrintJob job;
};
// Fake PrinterProviderAPI used in tests.
@@ -295,12 +289,7 @@ class FakePrinterProviderAPI : public PrinterProviderAPI {
const PrinterProviderAPI::PrintCallback& callback) override {
PrintRequestInfo request_info;
request_info.callback = callback;
-
- request_info.params.printer_id = job.printer_id;
- request_info.params.ticket = job.ticket_json;
- request_info.params.content_type = job.content_type;
- request_info.params.document = std::string(
- job.document_bytes->front_as<char>(), job.document_bytes->size());
+ request_info.job = job;
pending_print_requests_.push_back(request_info);
}
@@ -309,6 +298,13 @@ class FakePrinterProviderAPI : public PrinterProviderAPI {
return pending_printers_callbacks_.size();
}
+ const PrinterProviderPrintJob* GetPrintJob(
+ const extensions::Extension* extension,
+ int request_id) const override {
+ ADD_FAILURE() << "Not reached";
+ return nullptr;
+ }
+
void TriggerNextGetPrintersCallback(const base::ListValue& printers,
bool done) {
ASSERT_GT(pending_get_printers_count(), 0u);
@@ -329,11 +325,11 @@ class FakePrinterProviderAPI : public PrinterProviderAPI {
size_t pending_print_count() const { return pending_print_requests_.size(); }
- const PrintJobParams* GetNextPendingPrintJob() const {
+ const PrinterProviderPrintJob* GetNextPendingPrintJob() const {
EXPECT_GT(pending_print_count(), 0u);
if (pending_print_count() == 0)
return NULL;
- return &pending_print_requests_[0].params;
+ return &pending_print_requests_[0].job;
}
void TriggerNextPrintCallback(const std::string& result) {
@@ -527,13 +523,16 @@ TEST_F(ExtensionPrinterHandlerTest, Print_Pdf) {
ASSERT_TRUE(fake_api);
ASSERT_EQ(1u, fake_api->pending_print_count());
- const PrintJobParams* print_job = fake_api->GetNextPendingPrintJob();
+ const PrinterProviderPrintJob* print_job = fake_api->GetNextPendingPrintJob();
ASSERT_TRUE(print_job);
EXPECT_EQ(kPrinterId, print_job->printer_id);
- EXPECT_EQ(kEmptyPrintTicket, print_job->ticket);
+ EXPECT_EQ(kEmptyPrintTicket, print_job->ticket_json);
EXPECT_EQ(kContentTypePDF, print_job->content_type);
- EXPECT_EQ(print_data->data(), print_job->document);
+ EXPECT_TRUE(print_job->document_path.empty());
+ ASSERT_TRUE(print_job->document_bytes);
+ EXPECT_EQ(print_data->data(),
+ RefCountedMemoryToString(print_job->document_bytes));
fake_api->TriggerNextPrintCallback(kPrintRequestSuccess);
@@ -588,13 +587,16 @@ TEST_F(ExtensionPrinterHandlerTest, Print_All) {
ASSERT_TRUE(fake_api);
ASSERT_EQ(1u, fake_api->pending_print_count());
- const PrintJobParams* print_job = fake_api->GetNextPendingPrintJob();
+ const PrinterProviderPrintJob* print_job = fake_api->GetNextPendingPrintJob();
ASSERT_TRUE(print_job);
EXPECT_EQ(kPrinterId, print_job->printer_id);
- EXPECT_EQ(kEmptyPrintTicket, print_job->ticket);
+ EXPECT_EQ(kEmptyPrintTicket, print_job->ticket_json);
EXPECT_EQ(kContentTypePDF, print_job->content_type);
- EXPECT_EQ(print_data->data(), print_job->document);
+ EXPECT_TRUE(print_job->document_path.empty());
+ ASSERT_TRUE(print_job->document_bytes);
+ EXPECT_EQ(print_data->data(),
+ RefCountedMemoryToString(print_job->document_bytes));
fake_api->TriggerNextPrintCallback(kPrintRequestSuccess);
@@ -636,13 +638,17 @@ TEST_F(ExtensionPrinterHandlerTest, Print_Pwg) {
EXPECT_EQ("0,0 208x416", // vertically_oriented_size * dpi / points_per_inch
pwg_raster_converter_->conversion_settings().area().ToString());
- const PrintJobParams* print_job = fake_api->GetNextPendingPrintJob();
+ const PrinterProviderPrintJob* print_job = fake_api->GetNextPendingPrintJob();
ASSERT_TRUE(print_job);
EXPECT_EQ(kPrinterId, print_job->printer_id);
- EXPECT_EQ(kEmptyPrintTicket, print_job->ticket);
+ EXPECT_EQ(kEmptyPrintTicket, print_job->ticket_json);
EXPECT_EQ(kContentTypePWG, print_job->content_type);
- EXPECT_EQ(print_data->data() + kPWGConversionSuffix, print_job->document);
+ EXPECT_FALSE(print_job->document_bytes);
+ EXPECT_FALSE(print_job->document_path.empty());
+ EXPECT_EQ(pwg_raster_converter_->path(), print_job->document_path);
+ EXPECT_EQ(static_cast<int64_t>(print_data->size()),
+ print_job->file_info.size);
fake_api->TriggerNextPrintCallback(kPrintRequestSuccess);
@@ -684,13 +690,17 @@ TEST_F(ExtensionPrinterHandlerTest, Print_Pwg_NonDefaultSettings) {
EXPECT_EQ("0,0 138x277", // vertically_oriented_size * dpi / points_per_inch
pwg_raster_converter_->conversion_settings().area().ToString());
- const PrintJobParams* print_job = fake_api->GetNextPendingPrintJob();
+ const PrinterProviderPrintJob* print_job = fake_api->GetNextPendingPrintJob();
ASSERT_TRUE(print_job);
EXPECT_EQ(kPrinterId, print_job->printer_id);
- EXPECT_EQ(kPrintTicketWithDuplex, print_job->ticket);
+ EXPECT_EQ(kPrintTicketWithDuplex, print_job->ticket_json);
EXPECT_EQ(kContentTypePWG, print_job->content_type);
- EXPECT_EQ(print_data->data() + kPWGConversionSuffix, print_job->document);
+ EXPECT_FALSE(print_job->document_bytes);
+ EXPECT_FALSE(print_job->document_path.empty());
+ EXPECT_EQ(pwg_raster_converter_->path(), print_job->document_path);
+ EXPECT_EQ(static_cast<int64_t>(print_data->size()),
+ print_job->file_info.size);
fake_api->TriggerNextPrintCallback(kPrintRequestSuccess);
« no previous file with comments | « chrome/browser/ui/webui/print_preview/extension_printer_handler.cc ('k') | content/browser/browser_context.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698