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
bool transparent,
    content::RenderWidgetHost* host,
    NativeWindow* native_window)
    : render_widget_host_(content::RenderWidgetHostImpl::From(host)),
      native_window_(native_window),
      software_output_device_(nullptr),
      frame_rate_(60),
      frame_rate_threshold_ms_(0),
      last_time_(base::Time::Now()),
      transparent_(transparent),
      scale_factor_(kDefaultScaleFactor),
      is_showing_(!render_widget_host_->is_hidden()),
      size_(native_window->GetSize()),
      painting_(true),
      root_layer_(new ui::Layer(ui::LAYER_SOLID_COLOR)),
      delegated_frame_host_(new content::DelegatedFrameHost(this)),
      weak_ptr_factory_(this) {
  DCHECK(render_widget_host_);
  render_widget_host_->SetView(this);
#if defined(OS_MACOSX)
  CreatePlatformWidget();
#else
  compositor_.reset(
      new ui::Compositor(content::GetContextFactory(),
                         base::ThreadTaskRunnerHandle::Get()));
  compositor_->SetAcceleratedWidget(native_window_->GetAcceleratedWidget());
#endif
  compositor_->SetDelegate(this);