diff options
author | vitalybuka <vitalybuka@chromium.org> | 2014-08-26 16:41:45 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-08-26 23:45:57 +0000 |
commit | 92ab8ce04d850a59aa3d1b49ba2986845102baf3 (patch) | |
tree | de095372d9f4ae672eb11adef98681ae1d2acb04 /printing/printing_context_win_unittest.cc | |
parent | fa29c3e30198fcdb462ec65f0627a5e5f524effb (diff) | |
download | chromium_src-92ab8ce04d850a59aa3d1b49ba2986845102baf3.zip chromium_src-92ab8ce04d850a59aa3d1b49ba2986845102baf3.tar.gz chromium_src-92ab8ce04d850a59aa3d1b49ba2986845102baf3.tar.bz2 |
Use document from preview for System Dialog printing on Windows.
System dialog shows only properties of selected printers, no system dialog with printers.
Removed global Ctrl+Shift+P shortcut on windows.
BUG=374321
Review URL: https://codereview.chromium.org/480303002
Cr-Commit-Position: refs/heads/master@{#292032}
Diffstat (limited to 'printing/printing_context_win_unittest.cc')
-rw-r--r-- | printing/printing_context_win_unittest.cc | 146 |
1 files changed, 1 insertions, 145 deletions
diff --git a/printing/printing_context_win_unittest.cc b/printing/printing_context_win_unittest.cc index 1d27935..5147249 100644 --- a/printing/printing_context_win_unittest.cc +++ b/printing/printing_context_win_unittest.cc @@ -2,20 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include <ocidl.h> -#include <commdlg.h> - -#include <string> +#include "printing/printing_context_win.h" -#include "base/bind.h" -#include "base/bind_helpers.h" -#include "base/memory/scoped_ptr.h" -#include "base/message_loop/message_loop.h" -#include "printing/backend/printing_info_win.h" -#include "printing/backend/win_helper.h" #include "printing/printing_test.h" -#include "printing/printing_context.h" -#include "printing/printing_context_win.h" #include "printing/print_settings.h" #include "testing/gtest/include/gtest/gtest.h" @@ -40,123 +29,6 @@ class PrintingContextTest : public PrintingTest<testing::Test>, PrintingContext::Result result_; }; -class MockPrintingContextWin : public PrintingContextWin { - public: - MockPrintingContextWin(Delegate* delegate) : PrintingContextWin(delegate) {} - - protected: - // This is a fake PrintDlgEx implementation that sets the right fields in - // |lppd| to trigger a bug in older revisions of PrintingContext. - HRESULT ShowPrintDialog(PRINTDLGEX* lppd) OVERRIDE { - // The interesting bits: - // Pretend the user hit print - lppd->dwResultAction = PD_RESULT_PRINT; - - // Pretend the page range is 1-5, but since lppd->Flags does not have - // PD_SELECTION set, this really shouldn't matter. - lppd->nPageRanges = 1; - lppd->lpPageRanges[0].nFromPage = 1; - lppd->lpPageRanges[0].nToPage = 5; - - base::string16 printer_name = PrintingContextTest::GetDefaultPrinter(); - ScopedPrinterHandle printer; - if (!printer.OpenPrinter(printer_name.c_str())) - return E_FAIL; - - scoped_ptr<uint8[]> buffer; - const DEVMODE* dev_mode = NULL; - HRESULT result = S_OK; - lppd->hDC = NULL; - lppd->hDevMode = NULL; - lppd->hDevNames = NULL; - - PrinterInfo2 info_2; - if (info_2.Init(printer)) { - dev_mode = info_2.get()->pDevMode; - } - if (!dev_mode) { - result = E_FAIL; - goto Cleanup; - } - - if (!PrintingContextWin::AllocateContext( - printer_name, dev_mode, &lppd->hDC)) { - result = E_FAIL; - goto Cleanup; - } - - size_t dev_mode_size = dev_mode->dmSize + dev_mode->dmDriverExtra; - lppd->hDevMode = GlobalAlloc(GMEM_MOVEABLE, dev_mode_size); - if (!lppd->hDevMode) { - result = E_FAIL; - goto Cleanup; - } - void* dev_mode_ptr = GlobalLock(lppd->hDevMode); - if (!dev_mode_ptr) { - result = E_FAIL; - goto Cleanup; - } - memcpy(dev_mode_ptr, dev_mode, dev_mode_size); - GlobalUnlock(lppd->hDevMode); - dev_mode_ptr = NULL; - - size_t driver_size = - 2 + sizeof(wchar_t) * lstrlen(info_2.get()->pDriverName); - size_t printer_size = - 2 + sizeof(wchar_t) * lstrlen(info_2.get()->pPrinterName); - size_t port_size = 2 + sizeof(wchar_t) * lstrlen(info_2.get()->pPortName); - size_t dev_names_size = - sizeof(DEVNAMES) + driver_size + printer_size + port_size; - lppd->hDevNames = GlobalAlloc(GHND, dev_names_size); - if (!lppd->hDevNames) { - result = E_FAIL; - goto Cleanup; - } - void* dev_names_ptr = GlobalLock(lppd->hDevNames); - if (!dev_names_ptr) { - result = E_FAIL; - goto Cleanup; - } - DEVNAMES* dev_names = reinterpret_cast<DEVNAMES*>(dev_names_ptr); - dev_names->wDefault = 1; - dev_names->wDriverOffset = sizeof(DEVNAMES) / sizeof(wchar_t); - memcpy(reinterpret_cast<uint8*>(dev_names_ptr) + dev_names->wDriverOffset, - info_2.get()->pDriverName, - driver_size); - dev_names->wDeviceOffset = - dev_names->wDriverOffset + driver_size / sizeof(wchar_t); - memcpy(reinterpret_cast<uint8*>(dev_names_ptr) + dev_names->wDeviceOffset, - info_2.get()->pPrinterName, - printer_size); - dev_names->wOutputOffset = - dev_names->wDeviceOffset + printer_size / sizeof(wchar_t); - memcpy(reinterpret_cast<uint8*>(dev_names_ptr) + dev_names->wOutputOffset, - info_2.get()->pPortName, - port_size); - GlobalUnlock(lppd->hDevNames); - dev_names_ptr = NULL; - - Cleanup: - // Note: This section does proper deallocation/free of DC/global handles. We - // did not use ScopedHGlobal or ScopedHandle because they did not - // perform what we need. Goto's are used based on Windows programming - // idiom, to avoid deeply nested if's, and try-catch-finally is not - // allowed in Chromium. - if (FAILED(result)) { - if (lppd->hDC) { - DeleteDC(lppd->hDC); - } - if (lppd->hDevMode) { - GlobalFree(lppd->hDevMode); - } - if (lppd->hDevNames) { - GlobalFree(lppd->hDevNames); - } - } - return result; - } -}; - TEST_F(PrintingContextTest, Base) { if (IsTestCaseDisabled()) return; @@ -174,20 +46,4 @@ TEST_F(PrintingContextTest, Base) { EXPECT_TRUE(ModifyWorldTransform(context->context(), NULL, MWT_IDENTITY)); } -TEST_F(PrintingContextTest, PrintAll) { - base::MessageLoop message_loop; - if (IsTestCaseDisabled()) - return; - - MockPrintingContextWin context(this); - context.AskUserForSettings( - 123, - false, - base::Bind(&PrintingContextTest::PrintSettingsCallback, - base::Unretained(this))); - EXPECT_EQ(PrintingContext::OK, result()); - PrintSettings settings = context.settings(); - EXPECT_EQ(settings.ranges().size(), 0); -} - } // namespace printing |