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
DCHECK(canvas_.get());
  DCHECK(bitmap_.get());
  if (!bitmap_.get()) return;
  cc::SoftwareOutputDevice::EndPaint();
  if (active_)
    OnPaint(damage_rect_);
}
void OffScreenOutputDevice::SetActive(bool active) {
  if (active == active_)
    return;
  active_ = active;
  if (active_)
    OnPaint(gfx::Rect(viewport_pixel_size_));
}
void OffScreenOutputDevice::OnPaint(const gfx::Rect& damage_rect) {
  gfx::Rect rect = damage_rect;
  if (!pending_damage_rect_.IsEmpty()) {
    rect.Union(pending_damage_rect_);
    pending_damage_rect_.SetRect(0, 0, 0, 0);
  }
  rect.Intersect(gfx::Rect(viewport_pixel_size_));
  if (rect.IsEmpty())
    return;
  SkAutoLockPixels bitmap_pixels_lock(*bitmap_);
  callback_.Run(rect, gfx::Size(bitmap_->width(), bitmap_->height()),
                bitmap_->getPixels());
}
}