summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authorjstritar@chromium.org <jstritar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-15 18:03:05 +0000
committerjstritar@chromium.org <jstritar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-15 18:03:05 +0000
commitf2cc738f20fbfadfeccca94eb84c0baac63da0bb (patch)
treefc6463e24e41574e1b335f0944953ef3efc33d6b /chrome/browser
parent1837c260a77fe90648bfd9f15d7173159e118a19 (diff)
downloadchromium_src-f2cc738f20fbfadfeccca94eb84c0baac63da0bb.zip
chromium_src-f2cc738f20fbfadfeccca94eb84c0baac63da0bb.tar.gz
chromium_src-f2cc738f20fbfadfeccca94eb84c0baac63da0bb.tar.bz2
Indicate if window is closing in tabs.onRemoved callback
This adds a removeInfo object to the chrome.tabs.onRemoved callback that indicates if the tab's window is also closing. BUG=56592 TEST=ExtensionApiTest Review URL: http://codereview.chromium.org/3692004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62755 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/aeropeek_manager.cc8
-rw-r--r--chrome/browser/aeropeek_manager.h4
-rw-r--r--chrome/browser/browser.cc4
-rw-r--r--chrome/browser/browser.h4
-rw-r--r--chrome/browser/browser_browsertest.cc4
-rw-r--r--chrome/browser/chromeos/tab_closeable_state_watcher.cc5
-rw-r--r--chrome/browser/chromeos/tab_closeable_state_watcher.h4
-rw-r--r--chrome/browser/chromeos/wm_overview_controller.cc4
-rw-r--r--chrome/browser/cocoa/tab_strip_model_observer_bridge.h4
-rw-r--r--chrome/browser/cocoa/tab_strip_model_observer_bridge.mm3
-rw-r--r--chrome/browser/extensions/extension_browser_event_router.cc8
-rw-r--r--chrome/browser/extensions/extension_browser_event_router.h4
-rw-r--r--chrome/browser/extensions/extension_tabs_module_constants.cc1
-rw-r--r--chrome/browser/extensions/extension_tabs_module_constants.h1
-rw-r--r--chrome/browser/tabs/default_tab_handler.cc6
-rw-r--r--chrome/browser/tabs/default_tab_handler.h4
-rw-r--r--chrome/browser/tabs/tab_strip_model.cc2
-rw-r--r--chrome/browser/tabs/tab_strip_model_observer.cc4
-rw-r--r--chrome/browser/tabs/tab_strip_model_observer.h7
-rw-r--r--chrome/browser/tabs/tab_strip_model_unittest.cc4
20 files changed, 62 insertions, 23 deletions
diff --git a/chrome/browser/aeropeek_manager.cc b/chrome/browser/aeropeek_manager.cc
index a63d2b9..e10c3a1 100644
--- a/chrome/browser/aeropeek_manager.cc
+++ b/chrome/browser/aeropeek_manager.cc
@@ -1097,7 +1097,11 @@ void AeroPeekManager::TabInsertedAt(TabContents* contents,
tab_list_.push_back(window);
}
-void AeroPeekManager::TabClosingAt(TabContents* contents, int index) {
+void AeroPeekManager::TabClosingAt(TabStripModel* tab_strip_model,
+ TabContents* contents,
+ int index) {
+ // |tab_strip_model| is NULL when this is being called from TabDetachedAt
+ // below.
// Delete the AeroPeekWindow object associated with this tab and all its
// resources. (AeroPeekWindow::Destory() also removes this tab from the tab
// list of Windows.)
@@ -1115,7 +1119,7 @@ void AeroPeekManager::TabDetachedAt(TabContents* contents, int index) {
// Chrome will call TabInsertedAt() when this tab is inserted to another
// TabStrip. We will re-create an AeroPeekWindow object for this tab and
// re-add it to the tab list there.
- TabClosingAt(contents, index);
+ TabClosingAt(NULL, contents, index);
}
void AeroPeekManager::TabSelectedAt(TabContents* old_contents,
diff --git a/chrome/browser/aeropeek_manager.h b/chrome/browser/aeropeek_manager.h
index 3c2d0cb..104e57e 100644
--- a/chrome/browser/aeropeek_manager.h
+++ b/chrome/browser/aeropeek_manager.h
@@ -110,7 +110,9 @@ class AeroPeekManager : public TabStripModelObserver,
virtual void TabInsertedAt(TabContents* contents,
int index,
bool foreground);
- virtual void TabClosingAt(TabContents* contents, int index);
+ virtual void TabClosingAt(TabStripModel* tab_strip_model,
+ TabContents* contents,
+ int index);
virtual void TabDetachedAt(TabContents* contents, int index);
virtual void TabSelectedAt(TabContents* old_contents,
TabContents* new_contents,
diff --git a/chrome/browser/browser.cc b/chrome/browser/browser.cc
index d4b5446..0c7bacd 100644
--- a/chrome/browser/browser.cc
+++ b/chrome/browser/browser.cc
@@ -2620,7 +2620,9 @@ void Browser::TabInsertedAt(TabContents* contents,
Source<TabContents>(contents));
}
-void Browser::TabClosingAt(TabContents* contents, int index) {
+void Browser::TabClosingAt(TabStripModel* tab_strip_model,
+ TabContents* contents,
+ int index) {
NotificationService::current()->Notify(
NotificationType::TAB_CLOSING,
Source<NavigationController>(&contents->controller()),
diff --git a/chrome/browser/browser.h b/chrome/browser/browser.h
index f757e62..31da162 100644
--- a/chrome/browser/browser.h
+++ b/chrome/browser/browser.h
@@ -697,7 +697,9 @@ class Browser : public TabHandlerDelegate,
virtual void TabInsertedAt(TabContents* contents,
int index,
bool foreground);
- virtual void TabClosingAt(TabContents* contents, int index);
+ virtual void TabClosingAt(TabStripModel* tab_strip_model,
+ TabContents* contents,
+ int index);
virtual void TabDetachedAt(TabContents* contents, int index);
virtual void TabDeselectedAt(TabContents* contents, int index);
virtual void TabSelectedAt(TabContents* old_contents,
diff --git a/chrome/browser/browser_browsertest.cc b/chrome/browser/browser_browsertest.cc
index 2d18646..0e2aaf1 100644
--- a/chrome/browser/browser_browsertest.cc
+++ b/chrome/browser/browser_browsertest.cc
@@ -86,7 +86,9 @@ class MockTabStripModelObserver : public TabStripModelObserver {
public:
MockTabStripModelObserver() : closing_count_(0) {}
- virtual void TabClosingAt(TabContents* contents, int index) {
+ virtual void TabClosingAt(TabStripModel* tab_strip_model,
+ TabContents* contents,
+ int index) {
closing_count_++;
}
diff --git a/chrome/browser/chromeos/tab_closeable_state_watcher.cc b/chrome/browser/chromeos/tab_closeable_state_watcher.cc
index f3e867b..9346e86 100644
--- a/chrome/browser/chromeos/tab_closeable_state_watcher.cc
+++ b/chrome/browser/chromeos/tab_closeable_state_watcher.cc
@@ -41,10 +41,9 @@ void TabCloseableStateWatcher::TabStripWatcher::TabInsertedAt(
}
void TabCloseableStateWatcher::TabStripWatcher::TabClosingAt(
- TabContents* tab_contents, int index) {
- TabStripModel* tabstrip = browser_->tabstrip_model();
+ TabStripModel* tab_strip_model, TabContents* tab_contents, int index) {
// Check if the last tab is closing.
- if (tabstrip->count() == 1)
+ if (tab_strip_model->count() == 1)
main_watcher_->OnTabStripChanged(browser_, true);
}
diff --git a/chrome/browser/chromeos/tab_closeable_state_watcher.h b/chrome/browser/chromeos/tab_closeable_state_watcher.h
index 2620304..737cf46 100644
--- a/chrome/browser/chromeos/tab_closeable_state_watcher.h
+++ b/chrome/browser/chromeos/tab_closeable_state_watcher.h
@@ -116,7 +116,9 @@ class TabCloseableStateWatcher : public ::TabCloseableStateWatcher,
// TabStripModelObserver implementation:
virtual void TabInsertedAt(TabContents* contents, int index,
bool foreground);
- virtual void TabClosingAt(TabContents* contents, int index);
+ virtual void TabClosingAt(TabStripModel* tab_strip_model,
+ TabContents* contents,
+ int index);
virtual void TabDetachedAt(TabContents* contents, int index);
virtual void TabChangedAt(TabContents* contents, int index,
TabChangeType change_type);
diff --git a/chrome/browser/chromeos/wm_overview_controller.cc b/chrome/browser/chromeos/wm_overview_controller.cc
index cc0087f..f4bf91d 100644
--- a/chrome/browser/chromeos/wm_overview_controller.cc
+++ b/chrome/browser/chromeos/wm_overview_controller.cc
@@ -74,7 +74,9 @@ class BrowserListener : public TabStripModelObserver {
virtual void TabInsertedAt(TabContents* contents,
int index,
bool foreground);
- virtual void TabClosingAt(TabContents* contents, int index) {}
+ virtual void TabClosingAt(TabStripModel* tab_strip_model,
+ TabContents* contents,
+ int index) {}
virtual void TabDetachedAt(TabContents* contents, int index);
virtual void TabMoved(TabContents* contents,
int from_index,
diff --git a/chrome/browser/cocoa/tab_strip_model_observer_bridge.h b/chrome/browser/cocoa/tab_strip_model_observer_bridge.h
index 61810c2..f5b0619 100644
--- a/chrome/browser/cocoa/tab_strip_model_observer_bridge.h
+++ b/chrome/browser/cocoa/tab_strip_model_observer_bridge.h
@@ -27,7 +27,9 @@ class TabStripModelObserverBridge : public TabStripModelObserver {
virtual void TabInsertedAt(TabContents* contents,
int index,
bool foreground);
- virtual void TabClosingAt(TabContents* contents, int index);
+ virtual void TabClosingAt(TabStripModel* tab_strip_model,
+ TabContents* contents,
+ int index);
virtual void TabDetachedAt(TabContents* contents, int index);
virtual void TabSelectedAt(TabContents* old_contents,
TabContents* new_contents,
diff --git a/chrome/browser/cocoa/tab_strip_model_observer_bridge.mm b/chrome/browser/cocoa/tab_strip_model_observer_bridge.mm
index d1135c9..fbe5616 100644
--- a/chrome/browser/cocoa/tab_strip_model_observer_bridge.mm
+++ b/chrome/browser/cocoa/tab_strip_model_observer_bridge.mm
@@ -31,7 +31,8 @@ void TabStripModelObserverBridge::TabInsertedAt(TabContents* contents,
}
}
-void TabStripModelObserverBridge::TabClosingAt(TabContents* contents,
+void TabStripModelObserverBridge::TabClosingAt(TabStripModel* tab_strip_model,
+ TabContents* contents,
int index) {
if ([controller_ respondsToSelector:
@selector(tabClosingWithContents:atIndex:)]) {
diff --git a/chrome/browser/extensions/extension_browser_event_router.cc b/chrome/browser/extensions/extension_browser_event_router.cc
index cef987a..6728c8d 100644
--- a/chrome/browser/extensions/extension_browser_event_router.cc
+++ b/chrome/browser/extensions/extension_browser_event_router.cc
@@ -299,13 +299,19 @@ void ExtensionBrowserEventRouter::TabDetachedAt(TabContents* contents,
DispatchEvent(contents->profile(), events::kOnTabDetached, json_args);
}
-void ExtensionBrowserEventRouter::TabClosingAt(TabContents* contents,
+void ExtensionBrowserEventRouter::TabClosingAt(TabStripModel* tab_strip_model,
+ TabContents* contents,
int index) {
int tab_id = ExtensionTabUtil::GetTabId(contents);
ListValue args;
args.Append(Value::CreateIntegerValue(tab_id));
+ DictionaryValue* object_args = new DictionaryValue();
+ object_args->SetBoolean(tab_keys::kWindowClosing,
+ tab_strip_model->closing_all());
+ args.Append(object_args);
+
std::string json_args;
base::JSONWriter::Write(&args, false, &json_args);
diff --git a/chrome/browser/extensions/extension_browser_event_router.h b/chrome/browser/extensions/extension_browser_event_router.h
index a39da32..7cd2f99 100644
--- a/chrome/browser/extensions/extension_browser_event_router.h
+++ b/chrome/browser/extensions/extension_browser_event_router.h
@@ -60,7 +60,9 @@ class ExtensionBrowserEventRouter : public TabStripModelObserver,
// TabStripModelObserver
virtual void TabInsertedAt(TabContents* contents, int index, bool foreground);
- virtual void TabClosingAt(TabContents* contents, int index);
+ virtual void TabClosingAt(TabStripModel* tab_strip_model,
+ TabContents* contents,
+ int index);
virtual void TabDetachedAt(TabContents* contents, int index);
virtual void TabSelectedAt(TabContents* old_contents,
TabContents* new_contents,
diff --git a/chrome/browser/extensions/extension_tabs_module_constants.cc b/chrome/browser/extensions/extension_tabs_module_constants.cc
index c7c515b..9dc19b8 100644
--- a/chrome/browser/extensions/extension_tabs_module_constants.cc
+++ b/chrome/browser/extensions/extension_tabs_module_constants.cc
@@ -33,6 +33,7 @@ const char kTitleKey[] = "title";
const char kToIndexKey[] = "toIndex";
const char kTopKey[] = "top";
const char kUrlKey[] = "url";
+const char kWindowClosing[] = "isWindowClosing";
const char kWidthKey[] = "width";
const char kWindowIdKey[] = "windowId";
const char kWindowTypeKey[] = "type";
diff --git a/chrome/browser/extensions/extension_tabs_module_constants.h b/chrome/browser/extensions/extension_tabs_module_constants.h
index 79bd9a4..7ae35b7 100644
--- a/chrome/browser/extensions/extension_tabs_module_constants.h
+++ b/chrome/browser/extensions/extension_tabs_module_constants.h
@@ -37,6 +37,7 @@ extern const char kTitleKey[];
extern const char kToIndexKey[];
extern const char kTopKey[];
extern const char kUrlKey[];
+extern const char kWindowClosing[];
extern const char kWidthKey[];
extern const char kWindowIdKey[];
extern const char kIncognitoKey[];
diff --git a/chrome/browser/tabs/default_tab_handler.cc b/chrome/browser/tabs/default_tab_handler.cc
index dc3598b..e3968b7 100644
--- a/chrome/browser/tabs/default_tab_handler.cc
+++ b/chrome/browser/tabs/default_tab_handler.cc
@@ -145,8 +145,10 @@ void DefaultTabHandler::TabInsertedAt(TabContents* contents,
delegate_->AsBrowser()->TabInsertedAt(contents, index, foreground);
}
-void DefaultTabHandler::TabClosingAt(TabContents* contents, int index) {
- delegate_->AsBrowser()->TabClosingAt(contents, index);
+void DefaultTabHandler::TabClosingAt(TabStripModel* tab_strip_model,
+ TabContents* contents,
+ int index) {
+ delegate_->AsBrowser()->TabClosingAt(tab_strip_model, contents, index);
}
void DefaultTabHandler::TabDetachedAt(TabContents* contents, int index) {
diff --git a/chrome/browser/tabs/default_tab_handler.h b/chrome/browser/tabs/default_tab_handler.h
index 8a2af16..f8e2fde 100644
--- a/chrome/browser/tabs/default_tab_handler.h
+++ b/chrome/browser/tabs/default_tab_handler.h
@@ -60,7 +60,9 @@ class DefaultTabHandler : public TabHandler,
virtual void TabInsertedAt(TabContents* contents,
int index,
bool foreground);
- virtual void TabClosingAt(TabContents* contents, int index);
+ virtual void TabClosingAt(TabStripModel* tab_strip_model,
+ TabContents* contents,
+ int index);
virtual void TabDetachedAt(TabContents* contents, int index);
virtual void TabDeselectedAt(TabContents* contents, int index);
virtual void TabSelectedAt(TabContents* old_contents,
diff --git a/chrome/browser/tabs/tab_strip_model.cc b/chrome/browser/tabs/tab_strip_model.cc
index e06b3f3..bc9c796 100644
--- a/chrome/browser/tabs/tab_strip_model.cc
+++ b/chrome/browser/tabs/tab_strip_model.cc
@@ -858,7 +858,7 @@ void TabStripModel::InternalCloseTab(TabContents* contents,
int index,
bool create_historical_tabs) {
FOR_EACH_OBSERVER(TabStripModelObserver, observers_,
- TabClosingAt(contents, index));
+ TabClosingAt(this, contents, index));
// Ask the delegate to save an entry for this tab in the historical tab
// database if applicable.
diff --git a/chrome/browser/tabs/tab_strip_model_observer.cc b/chrome/browser/tabs/tab_strip_model_observer.cc
index fa2fe8b..af5f899 100644
--- a/chrome/browser/tabs/tab_strip_model_observer.cc
+++ b/chrome/browser/tabs/tab_strip_model_observer.cc
@@ -9,7 +9,9 @@ void TabStripModelObserver::TabInsertedAt(TabContents* contents,
bool foreground) {
}
-void TabStripModelObserver::TabClosingAt(TabContents* contents, int index) {
+void TabStripModelObserver::TabClosingAt(TabStripModel* tab_strip_model,
+ TabContents* contents,
+ int index) {
}
void TabStripModelObserver::TabDetachedAt(TabContents* contents, int index) {
diff --git a/chrome/browser/tabs/tab_strip_model_observer.h b/chrome/browser/tabs/tab_strip_model_observer.h
index 9a091ee..67a7ea3 100644
--- a/chrome/browser/tabs/tab_strip_model_observer.h
+++ b/chrome/browser/tabs/tab_strip_model_observer.h
@@ -7,6 +7,7 @@
#pragma once
class TabContents;
+class TabStripModel;
////////////////////////////////////////////////////////////////////////////////
//
@@ -45,8 +46,10 @@ class TabStripModelObserver {
bool foreground);
// The specified TabContents at |index| is being closed (and eventually
- // destroyed).
- virtual void TabClosingAt(TabContents* contents, int index);
+ // destroyed). |tab_strip_model| is the TabStripModel the tab was part of.
+ virtual void TabClosingAt(TabStripModel* tab_strip_model,
+ TabContents* contents,
+ int index);
// The specified TabContents at |index| is being detached, perhaps to be
// inserted in another TabStripModel. The implementer should take whatever
diff --git a/chrome/browser/tabs/tab_strip_model_unittest.cc b/chrome/browser/tabs/tab_strip_model_unittest.cc
index 6eee910..c85d80f 100644
--- a/chrome/browser/tabs/tab_strip_model_unittest.cc
+++ b/chrome/browser/tabs/tab_strip_model_unittest.cc
@@ -289,7 +289,9 @@ class MockTabStripModelObserver : public TabStripModelObserver {
states_.push_back(s);
}
- virtual void TabClosingAt(TabContents* contents, int index) {
+ virtual void TabClosingAt(TabStripModel* tab_strip_model,
+ TabContents* contents,
+ int index) {
states_.push_back(new State(contents, index, CLOSE));
}
virtual void TabDetachedAt(TabContents* contents, int index) {