<!--
Thanks for opening an issue! A few things to keep in mind:

- The issue tracker is only for bugs and feature requests.
- Before reporting a bug, please try reproducing your issue against
  the latest version of Electron.
- If you need general advice, join our Slack: http://atom-slack.herokuapp.com
-->

* Electron version: 1.7.11
* Operating system: win10 x64

i want record every frame to make a video,

### Expected behavior

stop painting page, until call startPainting()

### Actual behavior

not stop painting page

### How to reproduce
```js
const electron = require('electron');
const fs = require('fs');
const app = electron.app
const BrowserWindow = electron.BrowserWindow

let mainWindow

// app.disableHardwareAcceleration()
function createWindow() {
  mainWindow = new BrowserWindow({
    width: 480, height: 800, frame: false, resizable: false, // show: false,
    webPreferences: {
      offscreen: true
    }
  })
  // mainWindow = new BrowserWindow({ width: 480, height: 800 })
  var i = 0;
  mainWindow.webContents.on('paint', (event, dirty, image) => {
    mainWindow.webContents.stopPainting()
    const data = image.toPNG()
    fs.writeFileSync('./f/' + i++ + '.png', data)
    // mainWindow.webContents.startPainting()
  })
  mainWindow.webContents.setFrameRate(1)

  mainWindow.on('closed', function () {
    mainWindow = null
  })
  
  var url = 'https://github.com';
  mainWindow.loadURL(url)
  //mainWindow.webContents.openDevTools()

}

app.on('ready', createWindow)
app.on('window-all-closed', function () {
  if (process.platform !== 'darwin') {
    app.quit()
  }
})
app.on('activate', function () {
  if (mainWindow === null) {
    createWindow()
  }
})
```

atom/browser/osr/osr_render_widget_host_view.cc
native_window_->RemoveObserver(this);
  native_window_ = nullptr;
}
void OffScreenRenderWidgetHostView::OnBeginFrameTimerTick() {
  const base::TimeTicks frame_time = base::TimeTicks::Now();
  const base::TimeDelta vsync_period =
      base::TimeDelta::FromMicroseconds(frame_rate_threshold_us_);
  SendBeginFrame(frame_time, vsync_period);
}
void OffScreenRenderWidgetHostView::SendBeginFrame(
    base::TimeTicks frame_time, base::TimeDelta vsync_period) {
  base::TimeTicks display_time = frame_time + vsync_period;
  base::TimeDelta estimated_browser_composite_time =
      base::TimeDelta::FromMicroseconds(
          (1.0f * base::Time::kMicrosecondsPerSecond) / (3.0f * 60));
  base::TimeTicks deadline = display_time - estimated_browser_composite_time;
  const cc::BeginFrameArgs& begin_frame_args =
      cc::BeginFrameArgs::Create(BEGINFRAME_FROM_HERE,
                                 begin_frame_source_.source_id(),
                                 begin_frame_number_, frame_time, deadline,
                                 vsync_period, cc::BeginFrameArgs::NORMAL);
  DCHECK(begin_frame_args.IsValid());
  begin_frame_number_++;
  if (renderer_compositor_frame_sink_)
    renderer_compositor_frame_sink_->OnBeginFrame(begin_frame_args);
}
bool OffScreenRenderWidgetHostView::OnMessageReceived(