[go: nahoru, domu]

blob: 61ea80b59aa0c51e24af38c378d7ac1a865b2a47 [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_PRINTING_BROWSER_PRINTING_CONTEXT_FACTORY_FOR_TEST_H_
#define CHROME_BROWSER_PRINTING_BROWSER_PRINTING_CONTEXT_FACTORY_FOR_TEST_H_
#include <memory>
#include <optional>
#include <string>
#include "build/build_config.h"
#include "printing/buildflags/buildflags.h"
#include "printing/printing_context.h"
#include "printing/printing_context_factory_for_test.h"
#include "printing/test_printing_context.h"
namespace printing {
class BrowserPrintingContextFactoryForTest
: public PrintingContextFactoryForTest {
public:
BrowserPrintingContextFactoryForTest();
~BrowserPrintingContextFactoryForTest();
std::unique_ptr<PrintingContext> CreatePrintingContext(
PrintingContext::Delegate* delegate,
PrintingContext::ProcessBehavior process_behavior) override;
void SetPrinterNameForSubsequentContexts(const std::string& printer_name);
#if BUILDFLAG(IS_WIN)
void SetPrinterLanguageTypeForSubsequentContexts(
mojom::PrinterLanguageType printer_language_type);
#endif
void SetFailedErrorOnUpdatePrinterSettings();
void SetCancelErrorOnNewDocument(bool cause_errors);
void SetFailedErrorOnNewDocument(bool cause_errors);
void SetJobIdOnNewDocument(int job_id);
void SetAccessDeniedErrorOnNewDocument(bool cause_errors);
#if BUILDFLAG(IS_WIN)
void SetAccessDeniedErrorOnRenderPage(bool cause_errors);
void SetFailedErrorForRenderPage(uint32_t page_number);
#endif
void SetAccessDeniedErrorOnRenderDocument(bool cause_errors);
void SetAccessDeniedErrorOnDocumentDone(bool cause_errors);
void SetFailErrorOnUseDefaultSettings();
#if BUILDFLAG(ENABLE_BASIC_PRINT_DIALOG)
void SetCancelErrorOnAskUserForSettings();
#endif
void SetOnNewDocumentCallback(
TestPrintingContext::OnNewDocumentCallback callback);
private:
std::unique_ptr<TestPrintingContext> MakeDefaultTestPrintingContext(
PrintingContext::Delegate* delegate,
PrintingContext::ProcessBehavior process_behavior,
const std::string& printer_name);
std::string printer_name_;
#if BUILDFLAG(IS_WIN)
std::optional<mojom::PrinterLanguageType> printer_language_type_;
#endif
bool failed_error_for_update_printer_settings_ = false;
bool cancels_in_new_document_ = false;
bool failed_error_for_new_document_ = false;
bool access_denied_errors_for_new_document_ = false;
std::optional<int> new_document_job_id_;
#if BUILDFLAG(IS_WIN)
bool access_denied_errors_for_render_page_ = false;
uint32_t failed_error_for_render_page_number_ = 0;
#endif
bool access_denied_errors_for_render_document_ = false;
bool access_denied_errors_for_document_done_ = false;
bool fail_on_use_default_settings_ = false;
#if BUILDFLAG(ENABLE_BASIC_PRINT_DIALOG)
bool cancel_on_ask_user_for_settings_ = false;
#endif
TestPrintingContext::OnNewDocumentCallback on_new_document_callback_;
};
} // namespace printing
#endif // CHROME_BROWSER_PRINTING_BROWSER_PRINTING_CONTEXT_FACTORY_FOR_TEST_H_