| Index: Source/web/WebDevToolsAgentImpl.cpp | 
| diff --git a/Source/web/WebDevToolsAgentImpl.cpp b/Source/web/WebDevToolsAgentImpl.cpp | 
| index 20a7784dfa537bee98dbc0e82b4187154cd998ca..79082e21305e2b3303467a77cd134189c9057e63 100644 | 
| --- a/Source/web/WebDevToolsAgentImpl.cpp | 
| +++ b/Source/web/WebDevToolsAgentImpl.cpp | 
| @@ -231,6 +231,9 @@ WebDevToolsAgentImpl::WebDevToolsAgentImpl( | 
| : m_client(client) | 
| , m_webViewImpl(webViewImpl) | 
| , m_attached(false) | 
| +#if ENABLE(ASSERT) | 
| +    , m_hasBeenDisposed(false) | 
| +#endif | 
| , m_instrumentingAgents(webViewImpl->page()->instrumentingAgents()) | 
| , m_injectedScriptManager(InjectedScriptManager::createForPage()) | 
| , m_state(adoptPtrWillBeNoop(new InspectorCompositeState(this))) | 
| @@ -304,10 +307,21 @@ WebDevToolsAgentImpl::WebDevToolsAgentImpl( | 
|  | 
| WebDevToolsAgentImpl::~WebDevToolsAgentImpl() | 
| { | 
| +    ASSERT(m_hasBeenDisposed); | 
| +} | 
| + | 
| +void WebDevToolsAgentImpl::dispose() | 
| +{ | 
| +    // Explicitly dispose of the agent before destructing to ensure | 
| +    // same behavior (and correctness) with and without Oilpan. | 
| ClientMessageLoopAdapter::inspectedViewClosed(m_webViewImpl); | 
| m_webViewImpl->settingsImpl()->setWebDevToolsAgentImpl(nullptr); | 
| if (m_attached) | 
| Platform::current()->currentThread()->removeTaskObserver(this); | 
| +#if ENABLE(ASSERT) | 
| +    ASSERT(!m_hasBeenDisposed); | 
| +    m_hasBeenDisposed = true; | 
| +#endif | 
| } | 
|  | 
| DEFINE_TRACE(WebDevToolsAgentImpl) | 
|  |