Fix printing with the sandbox enabled
authorGeoff Lywood <geoff@addepar.com>
Thu, 8 Dec 2016 01:33:28 +0000 (17:33 -0800)
committerGeoff Lywood <geoff@addepar.com>
Thu, 8 Dec 2016 01:40:18 +0000 (17:40 -0800)
Closes #7984

atom/renderer/atom_sandboxed_renderer_client.cc
spec/api-browser-window-spec.js

index 47d9d0ded6c6093f7008b6a0a5cd22457fa4853d..892930cf5004064129305f63c6979bc34cdb1f06 100644 (file)
@@ -15,6 +15,7 @@
 #include "atom/renderer/api/atom_api_renderer_ipc.h"
 #include "atom/renderer/atom_render_view_observer.h"
 #include "base/command_line.h"
+#include "chrome/renderer/printing/print_web_view_helper.h"
 #include "content/public/renderer/render_frame.h"
 #include "content/public/renderer/render_frame_observer.h"
 #include "content/public/renderer/render_view.h"
@@ -126,6 +127,7 @@ void AtomSandboxedRendererClient::RenderFrameCreated(
 
 void AtomSandboxedRendererClient::RenderViewCreated(
     content::RenderView* render_view) {
+  new printing::PrintWebViewHelper(render_view);
   new AtomSandboxedRenderViewObserver(render_view, this);
 }
 
index dad48d5497aa81d0a9ebc66ae8eab75012eeafcd..26fb22df39b81b1715020c3c636b070242b52917 100644 (file)
@@ -943,6 +943,26 @@ describe('browser-window module', function () {
           w.loadURL('file://' + path.join(fixtures, 'api', 'sandbox.html?webcontents-events'))
         })
       })
+
+      it('can print to PDF', function (done) {
+        w.destroy()
+        w = new BrowserWindow({
+          show: false,
+          webPreferences: {
+            sandbox: true,
+            preload: preload
+          }
+        })
+        w.loadURL('data:text/html,%3Ch1%3EHello%2C%20World!%3C%2Fh1%3E')
+        w.webContents.once('did-finish-load', function () {
+          w.webContents.printToPDF({}, function (error, data) {
+            assert.equal(error, null)
+            assert.equal(data instanceof Buffer, true)
+            assert.notEqual(data.length, 0)
+            done()
+          })
+        })
+      })
     })
   })