| Index: third_party/WebKit/Source/web/WebPluginContainerImpl.cpp | 
| diff --git a/third_party/WebKit/Source/web/WebPluginContainerImpl.cpp b/third_party/WebKit/Source/web/WebPluginContainerImpl.cpp | 
| index 72629f332e487324fae1cc8a508400a567b45c9e..60ab35cf439ce584894150ffa595f198ca372518 100644 | 
| --- a/third_party/WebKit/Source/web/WebPluginContainerImpl.cpp | 
| +++ b/third_party/WebKit/Source/web/WebPluginContainerImpl.cpp | 
| @@ -497,9 +497,10 @@ void WebPluginContainerImpl::loadFrameRequest(const WebURLRequest& request, cons | 
| // FIXME: This is a bit of hack to allow us to observe completion of | 
| // our frame request.  It would be better to evolve FrameLoader to | 
| // support a completion callback instead. | 
| -        OwnPtr<WebPluginLoadObserver> observer = adoptPtr(new WebPluginLoadObserver(this, request.url(), notifyData)); | 
| -        // FIXME: Calling get here is dangerous! What if observer is freed? | 
| +        OwnPtrWillBeRawPtr<WebPluginLoadObserver> observer = WebPluginLoadObserver::create(this, request.url(), notifyData); | 
| +#if !ENABLE(OILPAN) | 
| m_pluginLoadObservers.append(observer.get()); | 
| +#endif | 
| WebDataSourceImpl::setNextPluginLoadObserver(observer.release()); | 
| } | 
|  | 
| @@ -679,6 +680,7 @@ bool WebPluginContainerImpl::wantsWheelEvents() | 
| return m_wantsWheelEvents; | 
| } | 
|  | 
| +#if !ENABLE(OILPAN) | 
| void WebPluginContainerImpl::willDestroyPluginLoadObserver(WebPluginLoadObserver* observer) | 
| { | 
| size_t pos = m_pluginLoadObservers.find(observer); | 
| @@ -686,6 +688,7 @@ void WebPluginContainerImpl::willDestroyPluginLoadObserver(WebPluginLoadObserver | 
| return; | 
| m_pluginLoadObservers.remove(pos); | 
| } | 
| +#endif | 
|  | 
| // Private methods ------------------------------------------------------------- | 
|  | 
| @@ -722,21 +725,25 @@ void WebPluginContainerImpl::dispose() | 
| if (m_element && m_touchEventRequestType != TouchEventRequestTypeNone && m_element->document().frameHost()) | 
| m_element->document().frameHost()->eventHandlerRegistry().didRemoveEventHandler(*m_element, EventHandlerRegistry::TouchEvent); | 
|  | 
| -    for (size_t i = 0; i < m_pluginLoadObservers.size(); ++i) | 
| -        m_pluginLoadObservers[i]->clearPluginContainer(); | 
| +#if !ENABLE(OILPAN) | 
| +    for (const auto& observer : m_pluginLoadObservers) | 
| +        observer->clearPluginContainer(); | 
| +#endif | 
|  | 
| if (m_webPlugin) { | 
| RELEASE_ASSERT(!m_webPlugin->container() || m_webPlugin->container() == this); | 
| m_webPlugin->destroy(); | 
| +        m_webPlugin = nullptr; | 
| } | 
| -    m_webPlugin = nullptr; | 
|  | 
| if (m_webLayer) { | 
| GraphicsLayer::unregisterContentsLayer(m_webLayer); | 
| m_webLayer = nullptr; | 
| } | 
|  | 
| +#if !ENABLE(OILPAN) | 
| m_pluginLoadObservers.clear(); | 
| +#endif | 
| m_element = nullptr; | 
| } | 
|  | 
|  |