| Index: chrome/browser/ui/browser.cc | 
| diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc | 
| index 8cd337440a1443a2a048d6ba99b7108cc5965f7a..1828e4452a278b6a3bb9d9773e605c9b0443e45d 100644 | 
| --- a/chrome/browser/ui/browser.cc | 
| +++ b/chrome/browser/ui/browser.cc | 
| @@ -50,6 +50,8 @@ | 
| #include "chrome/browser/download/download_service.h" | 
| #include "chrome/browser/download/download_service_factory.h" | 
| #include "chrome/browser/download/download_shelf.h" | 
| +#include "chrome/browser/extensions/api/tabs/tabs_event_router.h" | 
| +#include "chrome/browser/extensions/api/tabs/tabs_windows_api.h" | 
| #include "chrome/browser/extensions/browser_extension_window_controller.h" | 
| #include "chrome/browser/extensions/extension_service.h" | 
| #include "chrome/browser/extensions/tab_helper.h" | 
| @@ -889,7 +891,7 @@ WebContents* Browser::OpenURL(const OpenURLParams& params) { | 
| void Browser::TabInsertedAt(WebContents* contents, | 
| int index, | 
| bool foreground) { | 
| -  SetAsDelegate(contents, this); | 
| +  SetAsDelegate(contents, true); | 
| SessionTabHelper* session_tab_helper = | 
| SessionTabHelper::FromWebContents(contents); | 
| session_tab_helper->SetWindowID(session_id()); | 
| @@ -932,7 +934,7 @@ void Browser::TabClosingAt(TabStripModel* tab_strip_model, | 
| content::NotificationService::NoDetails()); | 
|  | 
| // Sever the WebContents' connection back to us. | 
| -  SetAsDelegate(contents, NULL); | 
| +  SetAsDelegate(contents, false); | 
| } | 
|  | 
| void Browser::TabDetachedAt(WebContents* contents, int index) { | 
| @@ -2181,7 +2183,8 @@ bool Browser::CanCloseWithInProgressDownloads() { | 
| /////////////////////////////////////////////////////////////////////////////// | 
| // Browser, Assorted utility functions (private): | 
|  | 
| -void Browser::SetAsDelegate(WebContents* web_contents, Browser* delegate) { | 
| +void Browser::SetAsDelegate(WebContents* web_contents, bool set_delegate) { | 
| +  Browser* delegate = set_delegate ? this : NULL; | 
| // WebContents... | 
| web_contents->SetDelegate(delegate); | 
|  | 
| @@ -2192,7 +2195,10 @@ void Browser::SetAsDelegate(WebContents* web_contents, Browser* delegate) { | 
| CoreTabHelper::FromWebContents(web_contents)->set_delegate(delegate); | 
| SearchEngineTabHelper::FromWebContents(web_contents)->set_delegate(delegate); | 
| SearchTabHelper::FromWebContents(web_contents)->set_delegate(delegate); | 
| -  ZoomController::FromWebContents(web_contents)->set_observer(delegate); | 
| +  if (delegate) | 
| +    ZoomController::FromWebContents(web_contents)->AddObserver(this); | 
| +  else | 
| +    ZoomController::FromWebContents(web_contents)->RemoveObserver(this); | 
| ChromeTranslateClient* chrome_translate_client = | 
| ChromeTranslateClient::FromWebContents(web_contents); | 
| chrome_translate_client->translate_driver().set_observer( | 
| @@ -2221,7 +2227,7 @@ void Browser::TabDetachedAtImpl(content::WebContents* contents, | 
| SyncHistoryWithTabs(0); | 
| } | 
|  | 
| -  SetAsDelegate(contents, NULL); | 
| +  SetAsDelegate(contents, false); | 
| RemoveScheduledUpdatesFor(contents); | 
|  | 
| if (find_bar_controller_.get() && index == tab_strip_model_->active_index()) { | 
|  |