Commit a60a2e6a authored by sangwoo.ko's avatar sangwoo.ko Committed by Commit Bot

Use TabStripModelObserver's new API in chrome/browser/extensions

Replace old API with new API. In order to do this, changed
the API a little bit.

* Notify before deleting web conents when tabs are closed.
* Pass TabStripModel* in OnTabStripModelChanged().

This CL has no intended behavior change. Reordered methods
definitions so that they match with declarartion order.

Change-Id: I704cfb3418d06a7539096307aefab916338c65e9
Bug: 842194
Reviewed-on: https://chromium-review.googlesource.com/1171963
Commit-Queue: Sang Woo Ko <sangwoo108@chromium.org>
Reviewed-by: default avatarErik Chen <erikchen@chromium.org>
Reviewed-by: default avatarScott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/master@{#582840}
parent cbfffdd5
......@@ -16,6 +16,7 @@ DevToolsAutoOpener::~DevToolsAutoOpener() {
}
void DevToolsAutoOpener::OnTabStripModelChanged(
TabStripModel* tab_strip_model,
const TabStripModelChange& change,
const TabStripSelectionChange& selection) {
if (change.type() != TabStripModelChange::kInserted)
......
......@@ -16,6 +16,7 @@ class DevToolsAutoOpener : public TabStripModelObserver {
private:
// TabStripModelObserver overrides.
void OnTabStripModelChanged(
TabStripModel* tab_strip_model,
const TabStripModelChange& change,
const TabStripSelectionChange& selection) override;
......
......@@ -178,6 +178,7 @@ GlobalConfirmInfoBar::~GlobalConfirmInfoBar() {
}
void GlobalConfirmInfoBar::OnTabStripModelChanged(
TabStripModel* tab_strip_model,
const TabStripModelChange& change,
const TabStripSelectionChange& selection) {
if (change.type() != TabStripModelChange::kInserted)
......
......@@ -44,6 +44,7 @@ class GlobalConfirmInfoBar : public TabStripModelObserver,
// TabStripModelObserver:
void OnTabStripModelChanged(
TabStripModel* tab_strip_model,
const TabStripModelChange& change,
const TabStripSelectionChange& selection) override;
void TabChangedAt(content::WebContents* web_contents,
......
......@@ -54,32 +54,14 @@ class TabsEventRouter : public TabStripModelObserver,
void OnBrowserSetLastActive(Browser* browser) override;
// TabStripModelObserver:
void TabInsertedAt(TabStripModel* tab_strip_model,
content::WebContents* contents,
int index,
bool active) override;
void TabClosingAt(TabStripModel* tab_strip_model,
content::WebContents* contents,
int index) override;
void TabDetachedAt(content::WebContents* contents,
int index,
bool was_active) override;
void ActiveTabChanged(content::WebContents* old_contents,
content::WebContents* new_contents,
int index,
int reason) override;
void TabSelectionChanged(TabStripModel* tab_strip_model,
const ui::ListSelectionModel& old_model) override;
void TabMoved(content::WebContents* contents,
int from_index,
int to_index) override;
void OnTabStripModelChanged(
TabStripModel* tab_strip_model,
const TabStripModelChange& change,
const TabStripSelectionChange& selection) override;
void TabChangedAt(content::WebContents* contents,
int index,
TabChangeType change_type) override;
void TabReplacedAt(TabStripModel* tab_strip_model,
content::WebContents* old_contents,
content::WebContents* new_contents,
int index) override;
void TabPinnedStateChanged(TabStripModel* tab_strip_model,
content::WebContents* contents,
int index) override;
......@@ -102,7 +84,32 @@ class TabsEventRouter : public TabStripModelObserver,
bool is_auto_discardable) override;
private:
// "Synthetic" event. Called from TabInsertedAt if new tab is detected.
// Methods called from OnTabStripModelChanged.
void DispatchTabInsertedAt(TabStripModel* tab_strip_model,
content::WebContents* contents,
int index,
bool active);
void DispatchTabClosingAt(TabStripModel* tab_strip_model,
content::WebContents* contents,
int index);
void DispatchTabDetachedAt(content::WebContents* contents,
int index,
bool was_active);
void DispatchActiveTabChanged(content::WebContents* old_contents,
content::WebContents* new_contents,
int index,
int reason);
void DispatchTabSelectionChanged(TabStripModel* tab_strip_model,
const ui::ListSelectionModel& old_model);
void DispatchTabMoved(content::WebContents* contents,
int from_index,
int to_index);
void DispatchTabReplacedAt(content::WebContents* old_contents,
content::WebContents* new_contents,
int index);
// "Synthetic" event. Called from DispatchTabInsertedAt if new tab is
// detected.
void TabCreatedAt(content::WebContents* contents, int index, bool active);
// Internal processing of tab updated events. Intended to be called when
......@@ -123,12 +130,6 @@ class TabsEventRouter : public TabStripModelObserver,
std::unique_ptr<base::ListValue> args,
EventRouter::UserGestureState user_gesture);
void DispatchEventsAcrossIncognito(
Profile* profile,
const std::string& event_name,
std::unique_ptr<base::ListValue> event_args,
std::unique_ptr<base::ListValue> cross_incognito_args);
// Packages |changed_property_names| as a tab updated event for the tab
// |contents| and dispatches the event to the extension.
void DispatchTabUpdatedEvent(
......
......@@ -83,7 +83,8 @@ void BrowserTabStripTracker::MaybeTrackBrowser(Browser* browser) {
TabStripModelChange change(TabStripModelChange::kInserted, deltas);
TabStripSelectionChange selection(tab_strip_model->GetActiveWebContents(),
tab_strip_model->selection_model());
tab_strip_model_observer_->OnTabStripModelChanged(change, selection);
tab_strip_model_observer_->OnTabStripModelChanged(tab_strip_model, change,
selection);
}
void BrowserTabStripTracker::OnBrowserAdded(Browser* browser) {
......
......@@ -358,7 +358,7 @@ void TabStripModel::InsertWebContentsAt(int index,
TabStripModelChange::kInserted,
TabStripModelChange::CreateInsertDelta(raw_contents, index));
for (auto& observer : observers_)
observer.OnTabStripModelChanged(change, selection);
observer.OnTabStripModelChanged(this, change, selection);
}
std::unique_ptr<content::WebContents> TabStripModel::ReplaceWebContentsAt(
......@@ -395,7 +395,7 @@ std::unique_ptr<content::WebContents> TabStripModel::ReplaceWebContentsAt(
TabStripModelChange::CreateReplaceDelta(
old_contents.get(), raw_new_contents, index));
for (auto& observer : observers_)
observer.OnTabStripModelChanged(change, selection);
observer.OnTabStripModelChanged(this, change, selection);
return old_contents;
}
......@@ -514,6 +514,10 @@ void TabStripModel::SendDetachWebContentsNotifications(
selection.new_model = selection_model_;
selection.reason = TabStripModelObserver::CHANGE_REASON_NONE;
TabStripModelChange change(TabStripModelChange::kRemoved, deltas);
for (auto& observer : observers_)
observer.OnTabStripModelChanged(this, change, selection);
for (auto& dwc : notifications->detached_web_contents) {
if (notifications->selection_model.IsSelected(
dwc->index_before_any_removals)) {
......@@ -547,10 +551,6 @@ void TabStripModel::SendDetachWebContentsNotifications(
for (auto& observer : observers_)
observer.TabStripEmpty();
}
TabStripModelChange change(TabStripModelChange::kRemoved, deltas);
for (auto& observer : observers_)
observer.OnTabStripModelChanged(change, selection);
}
void TabStripModel::ActivateTabAt(int index, bool user_gesture) {
......@@ -1529,7 +1529,7 @@ TabStripSelectionChange TabStripModel::SetSelection(
(selection.active_tab_changed() || selection.selection_changed())) {
TabStripModelChange change;
for (auto& observer : observers_)
observer.OnTabStripModelChanged(change, selection);
observer.OnTabStripModelChanged(this, change, selection);
}
return selection;
......@@ -1575,7 +1575,7 @@ void TabStripModel::MoveWebContentsAtImpl(int index,
TabStripModelChange::kMoved,
TabStripModelChange::CreateMoveDelta(web_contents, index, to_position));
for (auto& observer : observers_)
observer.OnTabStripModelChanged(change, selection);
observer.OnTabStripModelChanged(this, change, selection);
}
void TabStripModel::MoveSelectedTabsToImpl(int index,
......
......@@ -74,6 +74,7 @@ TabStripModelObserver::TabStripModelObserver() {
}
void TabStripModelObserver::OnTabStripModelChanged(
TabStripModel* tab_strip_model,
const TabStripModelChange& change,
const TabStripSelectionChange& selection) {}
......
......@@ -173,7 +173,8 @@ class TabStripModelObserver {
// TabStripModel before the |change| and after the |change| are applied.
// When only selection/activation was changed without any change about
// WebContents, |change| can be empty.
virtual void OnTabStripModelChanged(const TabStripModelChange& change,
virtual void OnTabStripModelChanged(TabStripModel* tab_strip_model,
const TabStripModelChange& change,
const TabStripSelectionChange& selection);
// A new WebContents was inserted into the TabStripModel at the
......
......@@ -377,6 +377,7 @@ class NewTabStripModelObserver : public MockTabStripModelObserver {
// TabStripModelObserver implementation:
void OnTabStripModelChanged(
TabStripModel* tab_strip_model,
const TabStripModelChange& change,
const TabStripSelectionChange& selection) override {
switch (change.type()) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment