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_output_device.h
public:
  OffScreenOutputDevice(bool transparent, const OnPaintCallback& callback);
  ~OffScreenOutputDevice();
  
  void Resize(const gfx::Size& pixel_size, float scale_factor) override;
  SkCanvas* BeginPaint(const gfx::Rect& damage_rect) override;
  void EndPaint() override;
  void SetActive(bool active);
  void OnPaint(const gfx::Rect& damage_rect);
 private:
  const bool transparent_;
  OnPaintCallback callback_;
  bool active_;
  std::unique_ptr<SkCanvas> canvas_;
  std::unique_ptr<SkBitmap> bitmap_;
  gfx::Rect pending_damage_rect_;
  DISALLOW_COPY_AND_ASSIGN(OffScreenOutputDevice);
};
}  
#endif