1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/cocoa/tabs/tab_strip_model_observer_bridge.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
using content::WebContents;
TabStripModelObserverBridge::TabStripModelObserverBridge(TabStripModel* model,
id controller)
: controller_(controller), model_(model) {
DCHECK(model && controller);
// Register to be a listener on the model so we can get updates and tell
// |controller_| about them in the future.
model_->AddObserver(this);
}
TabStripModelObserverBridge::~TabStripModelObserverBridge() {
// Remove ourselves from receiving notifications.
model_->RemoveObserver(this);
}
void TabStripModelObserverBridge::TabInsertedAt(WebContents* contents,
int index,
bool foreground) {
if ([controller_ respondsToSelector:
@selector(insertTabWithContents:atIndex:inForeground:)]) {
[controller_ insertTabWithContents:contents
atIndex:index
inForeground:foreground];
}
}
void TabStripModelObserverBridge::TabClosingAt(TabStripModel* tab_strip_model,
WebContents* contents,
int index) {
if ([controller_ respondsToSelector:
@selector(tabClosingWithContents:atIndex:)]) {
[controller_ tabClosingWithContents:contents atIndex:index];
}
}
void TabStripModelObserverBridge::TabDetachedAt(WebContents* contents,
int index) {
if ([controller_ respondsToSelector:
@selector(tabDetachedWithContents:atIndex:)]) {
[controller_ tabDetachedWithContents:contents atIndex:index];
}
}
void TabStripModelObserverBridge::TabDeactivated(WebContents* contents) {
if ([controller_ respondsToSelector:@selector(tabDeactivatedWithContents:)])
[controller_ tabDeactivatedWithContents:contents];
}
void TabStripModelObserverBridge::ActiveTabChanged(WebContents* old_contents,
WebContents* new_contents,
int index,
int reason) {
if ([controller_ respondsToSelector:@selector(
activateTabWithContents:previousContents:atIndex:reason:)]) {
[controller_ activateTabWithContents:new_contents
previousContents:old_contents
atIndex:index
reason:reason];
}
}
void TabStripModelObserverBridge::TabSelectionChanged(
TabStripModel* tab_strip_model,
const ui::ListSelectionModel& old_model) {
if ([controller_ respondsToSelector:@selector(tabSelectionChanged)]) {
[controller_ tabSelectionChanged];
}
}
void TabStripModelObserverBridge::TabMoved(WebContents* contents,
int from_index,
int to_index) {
if ([controller_ respondsToSelector:
@selector(tabMovedWithContents:fromIndex:toIndex:)]) {
[controller_ tabMovedWithContents:contents
fromIndex:from_index
toIndex:to_index];
}
}
void TabStripModelObserverBridge::TabChangedAt(WebContents* contents,
int index,
TabChangeType change_type) {
if ([controller_ respondsToSelector:
@selector(tabChangedWithContents:atIndex:changeType:)]) {
[controller_ tabChangedWithContents:contents
atIndex:index
changeType:change_type];
}
}
void TabStripModelObserverBridge::TabReplacedAt(TabStripModel* tab_strip_model,
WebContents* old_contents,
WebContents* new_contents,
int index) {
if ([controller_ respondsToSelector:
@selector(tabReplacedWithContents:previousContents:atIndex:)]) {
[controller_ tabReplacedWithContents:new_contents
previousContents:old_contents
atIndex:index];
} else {
TabChangedAt(new_contents, index, ALL);
}
}
void TabStripModelObserverBridge::TabMiniStateChanged(WebContents* contents,
int index) {
if ([controller_ respondsToSelector:
@selector(tabMiniStateChangedWithContents:atIndex:)]) {
[controller_ tabMiniStateChangedWithContents:contents
atIndex:index];
}
}
void TabStripModelObserverBridge::TabStripEmpty() {
if ([controller_ respondsToSelector:@selector(tabStripEmpty)])
[controller_ tabStripEmpty];
}
void TabStripModelObserverBridge::TabStripModelDeleted() {
if ([controller_ respondsToSelector:@selector(tabStripModelDeleted)])
[controller_ tabStripModelDeleted];
}
|