| Index: chrome/browser/dom_ui/options/options_ui.cc
|
| diff --git a/chrome/browser/dom_ui/options/options_ui.cc b/chrome/browser/dom_ui/options/options_ui.cc
|
| index ffd8d78ac73ffff9dfbc54ea85c93a4a5b2ef049..26f0fbe2c15c1d618bf408da846590d458a3982a 100644
|
| --- a/chrome/browser/dom_ui/options/options_ui.cc
|
| +++ b/chrome/browser/dom_ui/options/options_ui.cc
|
| @@ -135,7 +135,8 @@ void OptionsPageUIHandler::UserMetricsRecordAction(
|
| //
|
| ////////////////////////////////////////////////////////////////////////////////
|
|
|
| -OptionsUI::OptionsUI(TabContents* contents) : DOMUI(contents) {
|
| +OptionsUI::OptionsUI(TabContents* contents)
|
| + : DOMUI(contents), initialized_handlers_(false) {
|
| DictionaryValue* localized_strings = new DictionaryValue();
|
|
|
| #if defined(OS_CHROMEOS)
|
| @@ -258,6 +259,14 @@ RefCountedMemory* OptionsUI::GetFaviconResourceBytes() {
|
| void OptionsUI::InitializeHandlers() {
|
| DCHECK(!GetProfile()->IsOffTheRecord());
|
|
|
| + // The reinitialize call from DidBecomeActiveForReusedRenderView end up being
|
| + // delivered after a new web page DOM has been brought up in an existing
|
| + // renderer (due to IPC delays), causing this method to be called twice. If
|
| + // that happens, ignore the second call.
|
| + if (initialized_handlers_)
|
| + return;
|
| + initialized_handlers_ = true;
|
| +
|
| std::vector<DOMMessageHandler*>::iterator iter;
|
| // Skip over the generic handler.
|
| for (iter = handlers_.begin() + 1; iter != handlers_.end(); ++iter) {
|
|
|