Home | History | Annotate | Download | only in printing
      1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_PRINTING_PRINTING_TEST_H__
      6 #define CHROME_BROWSER_PRINTING_PRINTING_TEST_H__
      7 
      8 #include <windows.h>
      9 #include <winspool.h>
     10 
     11 #include <string>
     12 
     13 #include "base/basictypes.h"
     14 
     15 // Disable the whole test case when executing on a computer that has no printer
     16 // installed.
     17 // Note: Parent should be testing::Test or InProcessBrowserTest.
     18 template<typename Parent>
     19 class PrintingTest : public Parent {
     20  public:
     21   static bool IsTestCaseDisabled() {
     22     return GetDefaultPrinter().empty();
     23   }
     24   static std::wstring GetDefaultPrinter() {
     25     wchar_t printer_name[MAX_PATH];
     26     DWORD size = arraysize(printer_name);
     27     BOOL result = ::GetDefaultPrinter(printer_name, &size);
     28     if (result == 0) {
     29       if (GetLastError() == ERROR_FILE_NOT_FOUND) {
     30         printf("There is no printer installed, printing can't be tested!\n");
     31         return std::wstring();
     32       }
     33       printf("INTERNAL PRINTER ERROR!\n");
     34       return std::wstring();
     35     }
     36     return printer_name;
     37   }
     38 };
     39 
     40 #endif  // CHROME_BROWSER_PRINTING_PRINTING_TEST_H__
     41