| 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/metro_pin_tab_helper_win.h" | 5 #include "chrome/browser/ui/metro_pin_tab_helper_win.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 | 8 |
| 9 #include "base/base_paths.h" | 9 #include "base/base_paths.h" |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 330 for (std::vector<SkBitmap>::const_iterator iter = bitmaps.begin(); | 330 for (std::vector<SkBitmap>::const_iterator iter = bitmaps.begin(); |
| 331 iter != bitmaps.end(); | 331 iter != bitmaps.end(); |
| 332 ++iter) { | 332 ++iter) { |
| 333 | 333 |
| 334 // If the new bitmap is too big, ignore it. | 334 // If the new bitmap is too big, ignore it. |
| 335 if (iter->height() > kMaxIconSize || iter->width() > kMaxIconSize) | 335 if (iter->height() > kMaxIconSize || iter->width() > kMaxIconSize) |
| 336 continue; | 336 continue; |
| 337 | 337 |
| 338 // If we don't have a best candidate yet, this is better so just grab it. | 338 // If we don't have a best candidate yet, this is better so just grab it. |
| 339 if (best_candidate_.isNull()) { | 339 if (best_candidate_.isNull()) { |
| 340 best_candidate_ = gfx::ImageSkia(*iter).DeepCopy(); | 340 best_candidate_ = *gfx::ImageSkia(*iter).DeepCopy().get(); |
| 341 continue; | 341 continue; |
| 342 } | 342 } |
| 343 | 343 |
| 344 // If it is smaller than our best one so far, ignore it. | 344 // If it is smaller than our best one so far, ignore it. |
| 345 if (iter->height() <= best_candidate_.height() || | 345 if (iter->height() <= best_candidate_.height() || |
| 346 iter->width() <= best_candidate_.width()) { | 346 iter->width() <= best_candidate_.width()) { |
| 347 continue; | 347 continue; |
| 348 } | 348 } |
| 349 | 349 |
| 350 // Othewise it is our new best candidate. | 350 // Othewise it is our new best candidate. |
| 351 best_candidate_ = gfx::ImageSkia(*iter).DeepCopy(); | 351 best_candidate_ = *gfx::ImageSkia(*iter).DeepCopy().get(); |
| 352 } | 352 } |
| 353 } | 353 } |
| 354 | 354 |
| 355 // If there are no more outstanding requests, pin the page on the FILE thread. | 355 // If there are no more outstanding requests, pin the page on the FILE thread. |
| 356 // Once this happens this downloader has done its job, so delete it. | 356 // Once this happens this downloader has done its job, so delete it. |
| 357 if (in_progress_requests_.empty()) { | 357 if (in_progress_requests_.empty()) { |
| 358 scoped_refptr<PinPageTaskRunner> runner( | 358 scoped_refptr<PinPageTaskRunner> runner( |
| 359 new PinPageTaskRunner(title_, url_, best_candidate_)); | 359 new PinPageTaskRunner(title_, url_, best_candidate_)); |
| 360 runner->Run(); | 360 runner->Run(); |
| 361 helper_->FaviconDownloaderFinished(); | 361 helper_->FaviconDownloaderFinished(); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 388 | 388 |
| 389 void MetroPinTabHelper::TogglePinnedToStartScreen() { | 389 void MetroPinTabHelper::TogglePinnedToStartScreen() { |
| 390 if (IsPinned()) { | 390 if (IsPinned()) { |
| 391 UnPinPageFromStartScreen(); | 391 UnPinPageFromStartScreen(); |
| 392 return; | 392 return; |
| 393 } | 393 } |
| 394 | 394 |
| 395 GURL url = web_contents()->GetURL(); | 395 GURL url = web_contents()->GetURL(); |
| 396 string16 url_str = UTF8ToUTF16(url.spec()); | 396 string16 url_str = UTF8ToUTF16(url.spec()); |
| 397 string16 title = web_contents()->GetTitle(); | 397 string16 title = web_contents()->GetTitle(); |
| 398 // TODO(oshima): Use scoped_ptr::Pass to pass it to other thread. |
| 398 gfx::ImageSkia favicon; | 399 gfx::ImageSkia favicon; |
| 399 FaviconTabHelper* favicon_tab_helper = FaviconTabHelper::FromWebContents( | 400 FaviconTabHelper* favicon_tab_helper = FaviconTabHelper::FromWebContents( |
| 400 web_contents()); | 401 web_contents()); |
| 401 if (favicon_tab_helper->FaviconIsValid()) | 402 if (favicon_tab_helper->FaviconIsValid()) |
| 402 favicon = favicon_tab_helper->GetFavicon().AsImageSkia().DeepCopy(); | 403 favicon = *favicon_tab_helper->GetFavicon().AsImageSkia().DeepCopy().get(); |
| 403 | 404 |
| 404 favicon_downloader_.reset(new FaviconDownloader(this, title, url_str, | 405 favicon_downloader_.reset(new FaviconDownloader(this, title, url_str, |
| 405 favicon)); | 406 favicon)); |
| 406 favicon_downloader_->Start(web_contents()->GetRenderViewHost(), | 407 favicon_downloader_->Start(web_contents()->GetRenderViewHost(), |
| 407 favicon_url_candidates_); | 408 favicon_url_candidates_); |
| 408 } | 409 } |
| 409 | 410 |
| 410 void MetroPinTabHelper::DidNavigateMainFrame( | 411 void MetroPinTabHelper::DidNavigateMainFrame( |
| 411 const content::LoadCommittedDetails& /*details*/, | 412 const content::LoadCommittedDetails& /*details*/, |
| 412 const content::FrameNavigateParams& /*params*/) { | 413 const content::FrameNavigateParams& /*params*/) { |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 460 } | 461 } |
| 461 | 462 |
| 462 GURL url = web_contents()->GetURL(); | 463 GURL url = web_contents()->GetURL(); |
| 463 string16 tile_id = GenerateTileId(UTF8ToUTF16(url.spec())); | 464 string16 tile_id = GenerateTileId(UTF8ToUTF16(url.spec())); |
| 464 metro_un_pin_from_start_screen(tile_id); | 465 metro_un_pin_from_start_screen(tile_id); |
| 465 } | 466 } |
| 466 | 467 |
| 467 void MetroPinTabHelper::FaviconDownloaderFinished() { | 468 void MetroPinTabHelper::FaviconDownloaderFinished() { |
| 468 favicon_downloader_.reset(); | 469 favicon_downloader_.reset(); |
| 469 } | 470 } |
| OLD | NEW |