1// Copyright (c) 2012 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_PRINT_DIALOG_CLOUD_H_
6#define CHROME_BROWSER_PRINTING_PRINT_DIALOG_CLOUD_H_
7
8#include <string>
9
10#include "base/basictypes.h"
11#include "base/callback.h"
12#include "base/memory/ref_counted_memory.h"
13#include "base/strings/string16.h"
14#include "ui/gfx/native_widget_types.h"
15
16class CommandLine;
17
18namespace base {
19class FilePath;
20}
21
22namespace content {
23class BrowserContext;
24}
25
26namespace user_prefs {
27class PrefRegistrySyncable;
28}
29
30namespace print_dialog_cloud {
31
32void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry);
33
34// Creates a print dialog to print a file on disk.
35// Called on the FILE or UI thread. Even though this may start up a modal
36// dialog, it will return immediately. The dialog is handled asynchronously.
37// If non-NULL, |modal_parent| specifies a window that the print dialog is modal
38// to.
39void CreatePrintDialogForFile(content::BrowserContext* browser_context,
40                              gfx::NativeWindow modal_parent,
41                              const base::FilePath& path_to_file,
42                              const string16& print_job_title,
43                              const string16& print_ticket,
44                              const std::string& file_type,
45                              bool delete_on_close);
46
47// Creates a print dialog to print data in RAM.
48// Called on the FILE or UI thread. Even though this may start up a modal
49// dialog, it will return immediately. The dialog is handled asynchronously.
50// If non-NULL, |modal_parent| specifies a window that the print dialog is modal
51// to.
52void CreatePrintDialogForBytes(content::BrowserContext* browser_context,
53                               gfx::NativeWindow modal_parent,
54                               const base::RefCountedMemory* data,
55                               const string16& print_job_title,
56                               const string16& print_ticket,
57                               const std::string& file_type);
58
59// Parse switches from command_line and display the print dialog as appropriate.
60// Uses the default profile.
61bool CreatePrintDialogFromCommandLine(const CommandLine& command_line);
62
63// Creates a dialog for signing into cloud print.
64// The dialog will call |callback| when complete.
65// Called on the UI thread. Even though this starts up a modal
66// dialog, it will return immediately. The dialog is handled asynchronously.
67// If non-NULL, |modal_parent| specifies a window that the print dialog is modal
68// to.
69void CreateCloudPrintSigninDialog(content::BrowserContext* browser_context,
70                                  gfx::NativeWindow modal_parent,
71                                  const base::Closure& callback);
72
73}  // end namespace
74
75#endif  // CHROME_BROWSER_PRINTING_PRINT_DIALOG_CLOUD_H_
76