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

Side by Side Diff: chrome/browser/ui/browser.cc

Issue 11640007: Make the UI an observer of downloads. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix Android clang build Created 7 years, 9 months 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
« no previous file with comments | « chrome/browser/ui/browser.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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/browser.h" 5 #include "chrome/browser/ui/browser.h"
6 6
7 #if defined(OS_WIN) 7 #if defined(OS_WIN)
8 #include <windows.h> 8 #include <windows.h>
9 #include <shellapi.h> 9 #include <shellapi.h>
10 #endif // defined(OS_WIN) 10 #endif // defined(OS_WIN)
(...skipping 1219 matching lines...) Expand 10 before | Expand all | Expand 10 after
1230 // Instant overlay state. 1230 // Instant overlay state.
1231 // ModeChanged() updates bookmark bar state for all mode transitions except 1231 // ModeChanged() updates bookmark bar state for all mode transitions except
1232 // when new mode is |SEARCH_SUGGESTIONS|, because that needs to be done when 1232 // when new mode is |SEARCH_SUGGESTIONS|, because that needs to be done when
1233 // the suggestions are ready. 1233 // the suggestions are ready.
1234 if (mode.is_search_suggestions() && 1234 if (mode.is_search_suggestions() &&
1235 bookmark_bar_state_ == BookmarkBar::SHOW) { 1235 bookmark_bar_state_ == BookmarkBar::SHOW) {
1236 UpdateBookmarkBarState(BOOKMARK_BAR_STATE_CHANGE_TAB_STATE); 1236 UpdateBookmarkBarState(BOOKMARK_BAR_STATE_CHANGE_TAB_STATE);
1237 } 1237 }
1238 } 1238 }
1239 1239
1240 void Browser::ShowDownload(content::DownloadItem* download) {
1241 if (!window())
1242 return;
1243
1244 // If the download occurs in a new tab, and it's not a save page
1245 // download (started before initial navigation completed) close it.
1246 WebContents* source = download->GetWebContents();
1247 if (source && source->GetController().IsInitialNavigation() &&
1248 tab_strip_model_->count() > 1 && !download->IsSavePackageDownload()) {
1249 CloseContents(source);
1250 }
1251
1252 // Some (app downloads) are not supposed to appear on the shelf.
1253 if (!DownloadItemModel(download).ShouldShowInShelf())
1254 return;
1255
1256 // GetDownloadShelf creates the download shelf if it was not yet created.
1257 DownloadShelf* shelf = window()->GetDownloadShelf();
1258 shelf->AddDownload(download);
1259 }
1260
1240 /////////////////////////////////////////////////////////////////////////////// 1261 ///////////////////////////////////////////////////////////////////////////////
1241 // Browser, content::WebContentsDelegate implementation: 1262 // Browser, content::WebContentsDelegate implementation:
1242 1263
1243 WebContents* Browser::OpenURLFromTab(WebContents* source, 1264 WebContents* Browser::OpenURLFromTab(WebContents* source,
1244 const OpenURLParams& params) { 1265 const OpenURLParams& params) {
1245 chrome::NavigateParams nav_params(this, params.url, params.transition); 1266 chrome::NavigateParams nav_params(this, params.url, params.transition);
1246 nav_params.source_contents = source; 1267 nav_params.source_contents = source;
1247 nav_params.referrer = params.referrer; 1268 nav_params.referrer = params.referrer;
1248 nav_params.extra_headers = params.extra_headers; 1269 nav_params.extra_headers = params.extra_headers;
1249 nav_params.disposition = params.disposition; 1270 nav_params.disposition = params.disposition;
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
1395 } 1416 }
1396 1417
1397 void Browser::RenderWidgetShowing() { 1418 void Browser::RenderWidgetShowing() {
1398 window_->DisableInactiveFrame(); 1419 window_->DisableInactiveFrame();
1399 } 1420 }
1400 1421
1401 int Browser::GetExtraRenderViewHeight() const { 1422 int Browser::GetExtraRenderViewHeight() const {
1402 return window_->GetExtraRenderViewHeight(); 1423 return window_->GetExtraRenderViewHeight();
1403 } 1424 }
1404 1425
1405 void Browser::OnStartDownload(WebContents* source,
1406 content::DownloadItem* download) {
1407 if (!DownloadItemModel(download).ShouldShowInShelf())
1408 return;
1409
1410 WebContents* constrained = GetConstrainingWebContents(source);
1411 if (constrained != source) {
1412 // Download in a constrained popup is shown in the tab that opened it.
1413 constrained->GetDelegate()->OnStartDownload(constrained, download);
1414 return;
1415 }
1416
1417 if (!window())
1418 return;
1419
1420 // GetDownloadShelf creates the download shelf if it was not yet created.
1421 DownloadShelf* shelf = window()->GetDownloadShelf();
1422 shelf->AddDownload(download);
1423
1424 // If the download occurs in a new tab, and it's not a save page
1425 // download (started before initial navigation completed), close it.
1426 if (source->GetController().IsInitialNavigation() &&
1427 tab_strip_model_->count() > 1 && !download->IsSavePackageDownload())
1428 CloseContents(source);
1429 }
1430
1431 void Browser::ViewSourceForTab(WebContents* source, const GURL& page_url) { 1426 void Browser::ViewSourceForTab(WebContents* source, const GURL& page_url) {
1432 DCHECK(source); 1427 DCHECK(source);
1433 chrome::ViewSource(this, source); 1428 chrome::ViewSource(this, source);
1434 } 1429 }
1435 1430
1436 void Browser::ViewSourceForFrame(WebContents* source, 1431 void Browser::ViewSourceForFrame(WebContents* source,
1437 const GURL& frame_url, 1432 const GURL& frame_url,
1438 const std::string& frame_content_state) { 1433 const std::string& frame_content_state) {
1439 DCHECK(source); 1434 DCHECK(source);
1440 chrome::ViewSource(this, source, frame_url, frame_content_state); 1435 chrome::ViewSource(this, source, frame_url, frame_content_state);
(...skipping 818 matching lines...) Expand 10 before | Expand all | Expand 10 after
2259 if (contents && !allow_js_access) { 2254 if (contents && !allow_js_access) {
2260 contents->web_contents()->GetController().LoadURL( 2255 contents->web_contents()->GetController().LoadURL(
2261 target_url, 2256 target_url,
2262 content::Referrer(), 2257 content::Referrer(),
2263 content::PAGE_TRANSITION_LINK, 2258 content::PAGE_TRANSITION_LINK,
2264 std::string()); // No extra headers. 2259 std::string()); // No extra headers.
2265 } 2260 }
2266 2261
2267 return contents != NULL; 2262 return contents != NULL;
2268 } 2263 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/browser.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698