Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5717)

Unified Diff: chrome/renderer/print_web_view_helper.cc

Issue 8566026: Implement skia sandbox callback (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/renderer/print_web_view_helper.h ('k') | skia/skia.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/renderer/print_web_view_helper.cc
diff --git a/chrome/renderer/print_web_view_helper.cc b/chrome/renderer/print_web_view_helper.cc
index 1b4008a97bcaa5d503a430d14b999bc5e1d91754..e1e060f5c5f00e364b6e7c7b69720969a2073173 100644
--- a/chrome/renderer/print_web_view_helper.cc
+++ b/chrome/renderer/print_web_view_helper.cc
@@ -45,6 +45,10 @@
#include "skia/ext/vector_canvas.h"
#include "skia/ext/vector_platform_device_skia.h"
#include "third_party/skia/include/core/SkTypeface.h"
+#if defined (OS_WIN)
+#include "content/common/child_process_messages.h"
+#include "third_party/skia/include/ports/SkSandbox_win.h"
+#endif
#elif defined(OS_MACOSX)
#include <CoreGraphics/CGContext.h>
@@ -255,6 +259,23 @@ void PrintHeaderFooterText(
} // namespace
+#if defined (OS_WIN) && defined (USE_SKIA)
+class PrintWebViewHelperSkSandbox : public skia::SkSandbox {
vandebo (ex-Chrome) 2011/11/15 17:03:30 This is the wrong place for this. It should go in
+ public:
+ explicit PrintWebViewHelperSkSandbox(PrintWebViewHelper* container) {
+ container_ = container;
+ }
+ virtual ~PrintWebViewHelperSkSandbox() {}
+
+ virtual bool EnsureFontLoad(LOGFONT logfont) {
+ return container_->EnsureFontLoad(logfont);
+ }
+
+ private:
+ PrintWebViewHelper* container_;
+};
+#endif // defined (OS_WIN) && defined (USE_SKIA)
+
// static - Not anonymous so that platform implementations can use it.
void PrintWebViewHelper::PrintHeaderAndFooter(
WebKit::WebCanvas* canvas,
@@ -442,9 +463,19 @@ PrintWebViewHelper::PrintWebViewHelper(content::RenderView* render_view)
is_print_ready_metafile_sent_(false),
user_cancelled_scripted_print_count_(0),
notify_browser_of_print_failure_(true) {
+#if defined(OS_WIN) && defined(USE_SKIA)
+ if (!skia::gSandbox) {
+ skia::gSandbox = new PrintWebViewHelperSkSandbox(this);
+ }
+#endif
}
-PrintWebViewHelper::~PrintWebViewHelper() {}
+PrintWebViewHelper::~PrintWebViewHelper() {
+#if defined(OS_WIN) && defined(USE_SKIA)
+ delete skia::gSandbox;
+ skia::gSandbox = NULL;
+#endif
+}
// Prints |frame| which called window.print().
void PrintWebViewHelper::PrintPage(WebKit::WebFrame* frame) {
@@ -1569,3 +1600,9 @@ void PrintWebViewHelper::PrintPreviewContext::ClearContext() {
pages_to_render_.clear();
error_ = PREVIEW_ERROR_NONE;
}
+
+#if defined(OS_WIN) && defined(USE_SKIA)
+bool PrintWebViewHelper::EnsureFontLoad(LOGFONT logfont) {
+ return Send(new ChildProcessHostMsg_PreCacheFont(logfont));
+}
+#endif
« no previous file with comments | « chrome/renderer/print_web_view_helper.h ('k') | skia/skia.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698