Re-register the internal chrome-devtools scheme handler after CefClearSchemeHandlerFactories() is called (issue #398).

git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@350 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
Marshall Greenblatt
2011-10-31 17:56:35 +00:00
parent 3f91de1cea
commit b45a7175ac
4 changed files with 14 additions and 7 deletions

View File

@ -118,8 +118,9 @@ public:
} // namespace
// Register the DevTools scheme handler.
void RegisterDevToolsSchemeHandler()
void RegisterDevToolsSchemeHandler(bool firstTime)
{
if (firstTime)
CefRegisterCustomScheme(kChromeDevToolsScheme, true, false, true);
CefRegisterSchemeHandlerFactory(kChromeDevToolsScheme, kChromeDevToolsHost,
new DevToolsSchemeHandlerFactory());

View File

@ -10,6 +10,6 @@ extern const char kChromeDevToolsHost[];
extern const char kChromeDevToolsURL[];
// Register the DevTools scheme handler.
void RegisterDevToolsSchemeHandler();
void RegisterDevToolsSchemeHandler(bool firstTime);
#endif // _CEF_BROWSER_DEVTOOLS_SCHEME_HANDLER_H

View File

@ -753,7 +753,7 @@ bool CefContext::Initialize(const CefSettings& settings)
// Perform DevTools scheme registration when CEF initialization is complete.
CefThread::PostTask(CefThread::UI, FROM_HERE,
base::Bind(&RegisterDevToolsSchemeHandler));
base::Bind(&RegisterDevToolsSchemeHandler, true));
return true;
}

View File

@ -4,6 +4,7 @@
// found in the LICENSE file.
#include "include/cef.h"
#include "browser_devtools_scheme_handler.h"
#include "browser_resource_loader_bridge.h"
#include "cef_context.h"
#include "cef_thread.h"
@ -560,8 +561,10 @@ private:
job = GetBuiltinSchemeRequestJob(request, scheme);
}
#ifndef NDEBUG
if (job)
DLOG(INFO) << "CefUrlRequestManager hit for " << request->url().spec();
#endif
return job;
}
@ -597,7 +600,7 @@ bool CefRegisterCustomScheme(const CefString& scheme_name,
{
// Verify that the context is in a valid state.
if (!CONTEXT_STATE_VALID()) {
NOTREACHED();
NOTREACHED() << "context not valid";
return false;
}
@ -625,7 +628,7 @@ bool CefRegisterSchemeHandlerFactory(const CefString& scheme_name,
{
// Verify that the context is in a valid state.
if (!CONTEXT_STATE_VALID()) {
NOTREACHED();
NOTREACHED() << "context not valid";
return false;
}
@ -645,12 +648,15 @@ bool CefClearSchemeHandlerFactories()
{
// Verify that the context is in a valid state.
if (!CONTEXT_STATE_VALID()) {
NOTREACHED();
NOTREACHED() << "context not valid";
return false;
}
if (CefThread::CurrentlyOn(CefThread::IO)) {
CefUrlRequestManager::GetInstance()->ClearFactories();
// Re-register the DevTools scheme handler.
RegisterDevToolsSchemeHandler(false);
} else {
CefThread::PostTask(CefThread::IO, FROM_HERE,
NewRunnableFunction(&CefClearSchemeHandlerFactories));