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.cc
}
void OffScreenOutputDevice::Resize(
    const gfx::Size& pixel_size, float scale_factor) {
  scale_factor_ = scale_factor;
  if (viewport_pixel_size_ == pixel_size) return;
  viewport_pixel_size_ = pixel_size;
  canvas_.reset();
  bitmap_.reset(new SkBitmap);
  bitmap_->allocN32Pixels(viewport_pixel_size_.width(),
                          viewport_pixel_size_.height(),
                          !transparent_);
  if (bitmap_->drawsNothing()) {
    NOTREACHED();
    bitmap_.reset();
    return;
  }
  if (transparent_)
    bitmap_->eraseARGB(0, 0, 0, 0);
  canvas_.reset(new SkCanvas(*bitmap_));
}
SkCanvas* OffScreenOutputDevice::BeginPaint(const gfx::Rect& damage_rect) {
  DCHECK(canvas_.get());
  DCHECK(bitmap_.get());
  damage_rect_ = damage_rect;
  return canvas_.get();
}
void OffScreenOutputDevice::EndPaint() {