I tired with the offscreen mode and here are the problems I found:
- [x] <del>The `data` of `paint` event is empty when loading simple local pages.</del>
- [x] The size of `data` is wrong, current implement uses the size of pointer (`sizeof(bitmap_pixels)`).
- [x] Crashes when opening devtools for offscreen window.
- [x] We should probably show a dummy view indicating it is offscreen instead of provide NULL.
- [x] The offscreen window is affecting the rendering of other windows. Try running `./script/test.py -g offscreen` and then refreshing the window.

/cc @gerhardberger @brenca

atom/browser/osr/osr_render_widget_host_view.cc
public:
  AtomBeginFrameTimer(int frame_rate_threshold_ms,
                      const base::Closure& callback)
      : callback_(callback) {
    time_source_ = cc::DelayBasedTimeSource::Create(
        base::TimeDelta::FromMilliseconds(frame_rate_threshold_ms),
        content::BrowserThread::GetMessageLoopProxyForThread(
          content::BrowserThread::UI).get());
    time_source_->SetClient(this);
  }
  void SetActive(bool active) {
    time_source_->SetActive(active);
  }
  bool IsActive() const {
    return time_source_->Active();
  }
  void SetFrameRateThresholdMs(int frame_rate_threshold_ms) {
    time_source_->SetTimebaseAndInterval(
        base::TimeTicks::Now(),
        base::TimeDelta::FromMilliseconds(frame_rate_threshold_ms));
  }
 private:
  void OnTimerTick() override {
    callback_.Run();
  }
  const base::Closure callback_;
  std::unique_ptr<cc::DelayBasedTimeSource> time_source_;
  DISALLOW_COPY_AND_ASSIGN(AtomBeginFrameTimer);
};
OffScreenRenderWidgetHostView::OffScreenRenderWidgetHostView(