Index: chrome/browser/extensions/extension_host.cc |
diff --git a/chrome/browser/extensions/extension_host.cc b/chrome/browser/extensions/extension_host.cc |
index 78ec4938c5da3fccd7702db10af06b96a38cde00..b4fbd00fed41456a972ca4d029e01459d56334ed 100644 |
--- a/chrome/browser/extensions/extension_host.cc |
+++ b/chrome/browser/extensions/extension_host.cc |
@@ -26,6 +26,7 @@ |
#include "chrome/common/pref_names.h" |
#include "chrome/common/pref_service.h" |
#include "chrome/common/render_messages.h" |
+#include "chrome/common/url_constants.h" |
#include "grit/browser_resources.h" |
#include "grit/generated_resources.h" |
@@ -193,6 +194,10 @@ void ExtensionHost::DidNavigate(RenderViewHost* render_view_host, |
} |
url_ = params.url; |
+ if (!url_.SchemeIs(chrome::kExtensionScheme)) { |
+ extension_function_dispatcher_.reset(NULL); |
+ return; |
+ } |
extension_function_dispatcher_.reset( |
new ExtensionFunctionDispatcher(render_view_host_, this, url_)); |
} |
@@ -244,8 +249,10 @@ void ExtensionHost::ProcessDOMUIMessage(const std::string& message, |
const std::string& content, |
int request_id, |
bool has_callback) { |
- extension_function_dispatcher_->HandleRequest(message, content, request_id, |
- has_callback); |
+ if (extension_function_dispatcher_.get()) { |
+ extension_function_dispatcher_->HandleRequest(message, content, request_id, |
+ has_callback); |
+ } |
} |
void ExtensionHost::DidInsertCSS() { |