Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(372)

Side by Side Diff: chrome/browser/cocoa/tabpose_window.mm

Issue 4694008: Make pink's TabContentsWrapper change compile on Windows.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 #import "chrome/browser/cocoa/tabpose_window.h" 5 #import "chrome/browser/cocoa/tabpose_window.h"
6 6
7 #import <QuartzCore/QuartzCore.h> 7 #import <QuartzCore/QuartzCore.h>
8 8
9 #include "app/resource_bundle.h" 9 #include "app/resource_bundle.h"
10 #include "base/mac_util.h" 10 #include "base/mac_util.h"
11 #include "base/mac/scoped_cftyperef.h" 11 #include "base/mac/scoped_cftyperef.h"
12 #include "base/scoped_callback_factory.h" 12 #include "base/scoped_callback_factory.h"
13 #include "base/sys_string_conversions.h" 13 #include "base/sys_string_conversions.h"
14 #include "chrome/app/chrome_command_ids.h" 14 #include "chrome/app/chrome_command_ids.h"
15 #include "chrome/browser/browser_process.h" 15 #include "chrome/browser/browser_process.h"
16 #import "chrome/browser/cocoa/bookmarks/bookmark_bar_constants.h" 16 #import "chrome/browser/cocoa/bookmarks/bookmark_bar_constants.h"
17 #import "chrome/browser/cocoa/browser_window_controller.h" 17 #import "chrome/browser/cocoa/browser_window_controller.h"
18 #import "chrome/browser/cocoa/tab_strip_controller.h" 18 #import "chrome/browser/cocoa/tab_strip_controller.h"
19 #import "chrome/browser/cocoa/tab_strip_model_observer_bridge.h" 19 #import "chrome/browser/cocoa/tab_strip_model_observer_bridge.h"
20 #import "chrome/browser/debugger/devtools_window.h" 20 #import "chrome/browser/debugger/devtools_window.h"
21 #include "chrome/browser/prefs/pref_service.h" 21 #include "chrome/browser/prefs/pref_service.h"
22 #include "chrome/browser/renderer_host/backing_store_mac.h" 22 #include "chrome/browser/renderer_host/backing_store_mac.h"
23 #include "chrome/browser/renderer_host/render_view_host.h" 23 #include "chrome/browser/renderer_host/render_view_host.h"
24 #include "chrome/browser/renderer_host/render_widget_host_view_mac.h" 24 #include "chrome/browser/renderer_host/render_widget_host_view_mac.h"
25 #include "chrome/browser/tab_contents/tab_contents.h" 25 #include "chrome/browser/tab_contents/tab_contents.h"
26 #include "chrome/browser/tab_contents_wrapper.h"
26 #include "chrome/browser/tab_contents/thumbnail_generator.h" 27 #include "chrome/browser/tab_contents/thumbnail_generator.h"
28 #include "chrome/browser/tab_contents_wrapper.h"
27 #include "chrome/common/pref_names.h" 29 #include "chrome/common/pref_names.h"
28 #include "grit/app_resources.h" 30 #include "grit/app_resources.h"
29 #include "skia/ext/skia_utils_mac.h" 31 #include "skia/ext/skia_utils_mac.h"
30 #include "third_party/skia/include/utils/mac/SkCGUtils.h" 32 #include "third_party/skia/include/utils/mac/SkCGUtils.h"
31 33
32 const int kTopGradientHeight = 15; 34 const int kTopGradientHeight = 15;
33 35
34 NSString* const kAnimationIdKey = @"AnimationId"; 36 NSString* const kAnimationIdKey = @"AnimationId";
35 NSString* const kAnimationIdFadeIn = @"FadeIn"; 37 NSString* const kAnimationIdFadeIn = @"FadeIn";
36 NSString* const kAnimationIdFadeOut = @"FadeOut"; 38 NSString* const kAnimationIdFadeOut = @"FadeOut";
(...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 int count_y_; 517 int count_y_;
516 518
517 DISALLOW_COPY_AND_ASSIGN(TileSet); 519 DISALLOW_COPY_AND_ASSIGN(TileSet);
518 }; 520 };
519 521
520 void TileSet::Build(TabStripModel* source_model) { 522 void TileSet::Build(TabStripModel* source_model) {
521 selected_index_ = source_model->selected_index(); 523 selected_index_ = source_model->selected_index();
522 tiles_.resize(source_model->count()); 524 tiles_.resize(source_model->count());
523 for (size_t i = 0; i < tiles_.size(); ++i) { 525 for (size_t i = 0; i < tiles_.size(); ++i) {
524 tiles_[i] = new Tile; 526 tiles_[i] = new Tile;
525 tiles_[i]->contents_ = source_model->GetTabContentsAt(i); 527 tiles_[i]->contents_ = source_model->GetTabContentsAt(i)->tab_contents();
526 } 528 }
527 } 529 }
528 530
529 void TileSet::Layout(NSRect containing_rect) { 531 void TileSet::Layout(NSRect containing_rect) {
530 int tile_count = tiles_.size(); 532 int tile_count = tiles_.size();
531 if (tile_count == 0) // Happens e.g. during test shutdown. 533 if (tile_count == 0) // Happens e.g. during test shutdown.
532 return; 534 return;
533 535
534 // Room around the tiles insde of |containing_rect|. 536 // Room around the tiles insde of |containing_rect|.
535 const int kSmallPaddingTop = 30; 537 const int kSmallPaddingTop = 30;
(...skipping 738 matching lines...) Expand 10 before | Expand all | Expand 10 after
1274 const tabpose::Tile& tile = tileSet_->tile_at(i); 1276 const tabpose::Tile& tile = tileSet_->tile_at(i);
1275 1277
1276 CALayer* faviconLayer = [allFaviconLayers_ objectAtIndex:i]; 1278 CALayer* faviconLayer = [allFaviconLayers_ objectAtIndex:i];
1277 faviconLayer.frame = NSRectToCGRect(tile.favicon_rect()); 1279 faviconLayer.frame = NSRectToCGRect(tile.favicon_rect());
1278 CALayer* titleLayer = [allTitleLayers_ objectAtIndex:i]; 1280 CALayer* titleLayer = [allTitleLayers_ objectAtIndex:i];
1279 titleLayer.frame = NSRectToCGRect(tile.title_rect()); 1281 titleLayer.frame = NSRectToCGRect(tile.title_rect());
1280 CALayer* thumbLayer = [allThumbnailLayers_ objectAtIndex:i]; 1282 CALayer* thumbLayer = [allThumbnailLayers_ objectAtIndex:i];
1281 thumbLayer.frame = NSRectToCGRect(tile.thumb_rect()); 1283 thumbLayer.frame = NSRectToCGRect(tile.thumb_rect());
1282 } 1284 }
1283 1285
1284 - (void)insertTabWithContents:(TabContents*)contents 1286 - (void)insertTabWithContents:(TabContentsWrapper*)contents
1285 atIndex:(NSInteger)index 1287 atIndex:(NSInteger)index
1286 inForeground:(bool)inForeground { 1288 inForeground:(bool)inForeground {
1287 // This happens if you cmd-click a link and then immediately open tabpose 1289 // This happens if you cmd-click a link and then immediately open tabpose
1288 // on a slowish machine. 1290 // on a slowish machine.
1289 ScopedCAActionSetDuration durationSetter(kObserverChangeAnimationDuration); 1291 ScopedCAActionSetDuration durationSetter(kObserverChangeAnimationDuration);
1290 1292
1291 // Insert new layer and relayout. 1293 // Insert new layer and relayout.
1292 tileSet_->InsertTileAt(index, contents); 1294 tileSet_->InsertTileAt(index, contents->tab_contents());
1293 tileSet_->Layout(containingRect_); 1295 tileSet_->Layout(containingRect_);
1294 [self addLayersForTile:tileSet_->tile_at(index) 1296 [self addLayersForTile:tileSet_->tile_at(index)
1295 showZoom:NO 1297 showZoom:NO
1296 slomo:NO 1298 slomo:NO
1297 animationDelegate:nil]; 1299 animationDelegate:nil];
1298 1300
1299 // Update old layers. 1301 // Update old layers.
1300 DCHECK_EQ(tabStripModel_->count(), 1302 DCHECK_EQ(tabStripModel_->count(),
1301 static_cast<int>([allThumbnailLayers_ count])); 1303 static_cast<int>([allThumbnailLayers_ count]));
1302 DCHECK_EQ(tabStripModel_->count(), 1304 DCHECK_EQ(tabStripModel_->count(),
1303 static_cast<int>([allTitleLayers_ count])); 1305 static_cast<int>([allTitleLayers_ count]));
1304 DCHECK_EQ(tabStripModel_->count(), 1306 DCHECK_EQ(tabStripModel_->count(),
1305 static_cast<int>([allFaviconLayers_ count])); 1307 static_cast<int>([allFaviconLayers_ count]));
1306 1308
1307 for (int i = 0; i < tabStripModel_->count(); ++i) { 1309 for (int i = 0; i < tabStripModel_->count(); ++i) {
1308 if (i == index) // The new layer. 1310 if (i == index) // The new layer.
1309 continue; 1311 continue;
1310 [self refreshLayerFramesAtIndex:i]; 1312 [self refreshLayerFramesAtIndex:i];
1311 } 1313 }
1312 1314
1313 // Update selection. 1315 // Update selection.
1314 int selectedIndex = tileSet_->selected_index(); 1316 int selectedIndex = tileSet_->selected_index();
1315 if (selectedIndex >= index) 1317 if (selectedIndex >= index)
1316 selectedIndex++; 1318 selectedIndex++;
1317 [self selectTileAtIndex:selectedIndex]; 1319 [self selectTileAtIndex:selectedIndex];
1318 } 1320 }
1319 1321
1320 - (void)tabClosingWithContents:(TabContents*)contents 1322 - (void)tabClosingWithContents:(TabContentsWrapper*)contents
1321 atIndex:(NSInteger)index { 1323 atIndex:(NSInteger)index {
1322 // We will also get a -tabDetachedWithContents:atIndex: notification for 1324 // We will also get a -tabDetachedWithContents:atIndex: notification for
1323 // closing tabs, so do nothing here. 1325 // closing tabs, so do nothing here.
1324 } 1326 }
1325 1327
1326 - (void)tabDetachedWithContents:(TabContents*)contents 1328 - (void)tabDetachedWithContents:(TabContentsWrapper*)contents
1327 atIndex:(NSInteger)index { 1329 atIndex:(NSInteger)index {
1328 ScopedCAActionSetDuration durationSetter(kObserverChangeAnimationDuration); 1330 ScopedCAActionSetDuration durationSetter(kObserverChangeAnimationDuration);
1329 1331
1330 // Remove layer and relayout. 1332 // Remove layer and relayout.
1331 tileSet_->RemoveTileAt(index); 1333 tileSet_->RemoveTileAt(index);
1332 tileSet_->Layout(containingRect_); 1334 tileSet_->Layout(containingRect_);
1333 1335
1334 [[allThumbnailLayers_ objectAtIndex:index] removeFromSuperlayer]; 1336 [[allThumbnailLayers_ objectAtIndex:index] removeFromSuperlayer];
1335 [allThumbnailLayers_ removeObjectAtIndex:index]; 1337 [allThumbnailLayers_ removeObjectAtIndex:index];
1336 [[allTitleLayers_ objectAtIndex:index] removeFromSuperlayer]; 1338 [[allTitleLayers_ objectAtIndex:index] removeFromSuperlayer];
(...skipping 16 matching lines...) Expand all
1353 [self refreshLayerFramesAtIndex:i]; 1355 [self refreshLayerFramesAtIndex:i];
1354 1356
1355 // Update selection. 1357 // Update selection.
1356 int selectedIndex = tileSet_->selected_index(); 1358 int selectedIndex = tileSet_->selected_index();
1357 if (selectedIndex >= index) 1359 if (selectedIndex >= index)
1358 selectedIndex--; 1360 selectedIndex--;
1359 if (selectedIndex >= 0) 1361 if (selectedIndex >= 0)
1360 [self selectTileAtIndex:selectedIndex]; 1362 [self selectTileAtIndex:selectedIndex];
1361 } 1363 }
1362 1364
1363 - (void)tabMovedWithContents:(TabContents*)contents 1365 - (void)tabMovedWithContents:(TabContentsWrapper*)contents
1364 fromIndex:(NSInteger)from 1366 fromIndex:(NSInteger)from
1365 toIndex:(NSInteger)to { 1367 toIndex:(NSInteger)to {
1366 ScopedCAActionSetDuration durationSetter(kObserverChangeAnimationDuration); 1368 ScopedCAActionSetDuration durationSetter(kObserverChangeAnimationDuration);
1367 1369
1368 // Move tile from |from| to |to|. 1370 // Move tile from |from| to |to|.
1369 tileSet_->MoveTileFromTo(from, to); 1371 tileSet_->MoveTileFromTo(from, to);
1370 1372
1371 // Move corresponding layers from |from| to |to|. 1373 // Move corresponding layers from |from| to |to|.
1372 scoped_nsobject<CALayer> thumbLayer( 1374 scoped_nsobject<CALayer> thumbLayer(
1373 [[allThumbnailLayers_ objectAtIndex:from] retain]); 1375 [[allThumbnailLayers_ objectAtIndex:from] retain]);
(...skipping 16 matching lines...) Expand all
1390 int selectedIndex = tileSet_->selected_index(); 1392 int selectedIndex = tileSet_->selected_index();
1391 if (from == selectedIndex) 1393 if (from == selectedIndex)
1392 selectedIndex = to; 1394 selectedIndex = to;
1393 else if (from < selectedIndex && selectedIndex <= to) 1395 else if (from < selectedIndex && selectedIndex <= to)
1394 selectedIndex--; 1396 selectedIndex--;
1395 else if (to <= selectedIndex && selectedIndex < from) 1397 else if (to <= selectedIndex && selectedIndex < from)
1396 selectedIndex++; 1398 selectedIndex++;
1397 [self selectTileAtIndex:selectedIndex]; 1399 [self selectTileAtIndex:selectedIndex];
1398 } 1400 }
1399 1401
1400 - (void)tabChangedWithContents:(TabContents*)contents 1402 - (void)tabChangedWithContents:(TabContentsWrapper*)contents
1401 atIndex:(NSInteger)index 1403 atIndex:(NSInteger)index
1402 changeType:(TabStripModelObserver::TabChangeType)change { 1404 changeType:(TabStripModelObserver::TabChangeType)change {
1403 // Tell the window to update text, title, and thumb layers at |index| to get 1405 // Tell the window to update text, title, and thumb layers at |index| to get
1404 // their data from |contents|. |contents| can be different from the old 1406 // their data from |contents|. |contents| can be different from the old
1405 // contents at that index! 1407 // contents at that index!
1406 // While a tab is loading, this is unfortunately called quite often for 1408 // While a tab is loading, this is unfortunately called quite often for
1407 // both the "loading" and the "all" change types, so we don't really want to 1409 // both the "loading" and the "all" change types, so we don't really want to
1408 // send thumb requests to the corresponding renderer when this is called. 1410 // send thumb requests to the corresponding renderer when this is called.
1409 // For now, just make sure that we don't hold on to an invalid TabContents 1411 // For now, just make sure that we don't hold on to an invalid TabContents
1410 // object. 1412 // object.
1411 tabpose::Tile& tile = tileSet_->tile_at(index); 1413 tabpose::Tile& tile = tileSet_->tile_at(index);
1412 if (contents == tile.tab_contents()) { 1414 if (contents->tab_contents() == tile.tab_contents()) {
1413 // TODO(thakis): Install a timer to send a thumb request/update title/update 1415 // TODO(thakis): Install a timer to send a thumb request/update title/update
1414 // favicon after 20ms or so, and reset the timer every time this is called 1416 // favicon after 20ms or so, and reset the timer every time this is called
1415 // to make sure we get an updated thumb, without requesting them all over. 1417 // to make sure we get an updated thumb, without requesting them all over.
1416 return; 1418 return;
1417 } 1419 }
1418 1420
1419 tile.set_tab_contents(contents); 1421 tile.set_tab_contents(contents->tab_contents());
1420 ThumbnailLayer* thumbLayer = [allThumbnailLayers_ objectAtIndex:index]; 1422 ThumbnailLayer* thumbLayer = [allThumbnailLayers_ objectAtIndex:index];
1421 [thumbLayer setTabContents:contents]; 1423 [thumbLayer setTabContents:contents->tab_contents()];
1422 } 1424 }
1423 1425
1424 - (void)tabStripModelDeleted { 1426 - (void)tabStripModelDeleted {
1425 [self close]; 1427 [self close];
1426 } 1428 }
1427 1429
1428 @end 1430 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698