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