File: print_view_manager_common.cc

package info (click to toggle)
chromium-browser 41.0.2272.118-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 2,189,132 kB
  • sloc: cpp: 9,691,462; ansic: 3,341,451; python: 712,689; asm: 518,779; xml: 208,926; java: 169,820; sh: 119,353; perl: 68,907; makefile: 28,311; yacc: 13,305; objc: 11,385; tcl: 3,186; cs: 2,225; sql: 2,217; lex: 2,215; lisp: 1,349; pascal: 1,256; awk: 407; ruby: 155; sed: 53; php: 14; exp: 11
file content (85 lines) | stat: -rw-r--r-- 2,841 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chrome/browser/printing/print_view_manager_common.h"

#if defined(ENABLE_EXTENSIONS)
#include "extensions/browser/guest_view/guest_view_manager.h"
#include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h"
#endif  // defined(ENABLE_EXTENSIONS)

#if defined(ENABLE_PRINT_PREVIEW)
#include "chrome/browser/printing/print_view_manager.h"
#else
#include "chrome/browser/printing/print_view_manager_basic.h"
#endif  // defined(ENABLE_PRINT_PREVIEW)

namespace printing {
namespace {
#if defined(ENABLE_EXTENSIONS)
// Stores |guest_contents| in |result| and returns true if |guest_contents| is a
// full page MimeHandlerViewGuest plugin. Otherwise, returns false.
bool StoreFullPagePlugin(content::WebContents** result,
                         content::WebContents* guest_contents) {
  auto guest_view =
      extensions::MimeHandlerViewGuest::FromWebContents(guest_contents);
  if (guest_view && guest_view->is_full_page_plugin()) {
    *result = guest_contents;
    return true;
  }
  return false;
}
#endif  // defined(ENABLE_EXTENSIONS)

// If we have a single full-page embedded mime handler view guest, print the
// guest's WebContents instead.
content::WebContents* GetWebContentsToUse(content::WebContents* contents) {
#if defined(ENABLE_EXTENSIONS)
  extensions::GuestViewManager::FromBrowserContext(
      contents->GetBrowserContext())
      ->ForEachGuest(contents, base::Bind(&StoreFullPagePlugin, &contents));
#endif  // defined(ENABLE_EXTENSIONS)
  return contents;
}

}  // namespace

void StartPrint(content::WebContents* contents,
                bool print_preview_disabled,
                bool selection_only) {
#if defined(ENABLE_PRINT_PREVIEW)
  using PrintViewManagerImpl = PrintViewManager;
#else
  using PrintViewManagerImpl = PrintViewManagerBasic;
#endif  // defined(ENABLE_PRINT_PREVIEW)

  auto print_view_manager =
      PrintViewManagerImpl::FromWebContents(GetWebContentsToUse(contents));
  if (!print_view_manager)
    return;
#if defined(ENABLE_PRINT_PREVIEW)
  if (!print_preview_disabled) {
    print_view_manager->PrintPreviewNow(selection_only);
    return;
  }
#endif  // ENABLE_PRINT_PREVIEW

#if defined(ENABLE_BASIC_PRINTING)
  print_view_manager->PrintNow();
#endif  // ENABLE_BASIC_PRINTING
}

#if defined(ENABLE_BASIC_PRINTING)
void StartBasicPrint(content::WebContents* contents) {
#if defined(ENABLE_PRINT_PREVIEW)
  PrintViewManager* print_view_manager =
      PrintViewManager::FromWebContents(GetWebContentsToUse(contents));
  if (!print_view_manager)
    return;
  print_view_manager->BasicPrint();
#endif  // ENABLE_PRINT_PREVIEW
}
#endif  // ENABLE_BASIC_PRINTING

}  // namespace printing