OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/gtk/download/download_item_gtk.h" | 5 #include "chrome/browser/ui/gtk/download/download_item_gtk.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/callback.h" | 8 #include "base/callback.h" |
9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
286 | 286 |
287 // Make sure this widget has been destroyed and the pointer we hold to it | 287 // Make sure this widget has been destroyed and the pointer we hold to it |
288 // NULLed. | 288 // NULLed. |
289 DCHECK(!status_label_); | 289 DCHECK(!status_label_); |
290 } | 290 } |
291 | 291 |
292 void DownloadItemGtk::OnDownloadUpdated(DownloadItem* download) { | 292 void DownloadItemGtk::OnDownloadUpdated(DownloadItem* download) { |
293 DCHECK_EQ(download, get_download()); | 293 DCHECK_EQ(download, get_download()); |
294 | 294 |
295 if (dangerous_prompt_ != NULL && | 295 if (dangerous_prompt_ != NULL && |
296 download->safety_state() == DownloadItem::DANGEROUS_BUT_VALIDATED) { | 296 download->GetSafetyState() == DownloadItem::DANGEROUS_BUT_VALIDATED) { |
297 // We have been approved. | 297 // We have been approved. |
298 gtk_widget_set_no_show_all(body_.get(), FALSE); | 298 gtk_widget_set_no_show_all(body_.get(), FALSE); |
299 gtk_widget_set_no_show_all(menu_button_, FALSE); | 299 gtk_widget_set_no_show_all(menu_button_, FALSE); |
300 gtk_widget_show_all(hbox_.get()); | 300 gtk_widget_show_all(hbox_.get()); |
301 gtk_widget_destroy(dangerous_prompt_); | 301 gtk_widget_destroy(dangerous_prompt_); |
302 gtk_widget_set_size_request(body_.get(), kBodyWidth, -1); | 302 gtk_widget_set_size_request(body_.get(), kBodyWidth, -1); |
303 dangerous_prompt_ = NULL; | 303 dangerous_prompt_ = NULL; |
304 | 304 |
305 // We may free some shelf space for showing more download items. | 305 // We may free some shelf space for showing more download items. |
306 parent_shelf_->MaybeShowMoreDownloadItems(); | 306 parent_shelf_->MaybeShowMoreDownloadItems(); |
307 } | 307 } |
308 | 308 |
309 if (download->GetUserVerifiedFilePath() != icon_filepath_) { | 309 if (download->GetUserVerifiedFilePath() != icon_filepath_) { |
310 // Turns out the file path is "Unconfirmed %d.crdownload" for dangerous | 310 // Turns out the file path is "Unconfirmed %d.crdownload" for dangerous |
311 // downloads. When the download is confirmed, the file is renamed on | 311 // downloads. When the download is confirmed, the file is renamed on |
312 // another thread, so reload the icon if the download filename changes. | 312 // another thread, so reload the icon if the download filename changes. |
313 LoadIcon(); | 313 LoadIcon(); |
314 | 314 |
315 UpdateTooltip(); | 315 UpdateTooltip(); |
316 } | 316 } |
317 | 317 |
318 switch (download->state()) { | 318 switch (download->GetState()) { |
319 case DownloadItem::REMOVING: | 319 case DownloadItem::REMOVING: |
320 parent_shelf_->RemoveDownloadItem(this); // This will delete us! | 320 parent_shelf_->RemoveDownloadItem(this); // This will delete us! |
321 return; | 321 return; |
322 case DownloadItem::CANCELLED: | 322 case DownloadItem::CANCELLED: |
323 StopDownloadProgress(); | 323 StopDownloadProgress(); |
324 gtk_widget_queue_draw(progress_area_.get()); | 324 gtk_widget_queue_draw(progress_area_.get()); |
325 break; | 325 break; |
326 case DownloadItem::INTERRUPTED: | 326 case DownloadItem::INTERRUPTED: |
327 StopDownloadProgress(); | 327 StopDownloadProgress(); |
328 | 328 |
329 complete_animation_.Show(); | 329 complete_animation_.Show(); |
330 break; | 330 break; |
331 case DownloadItem::COMPLETE: | 331 case DownloadItem::COMPLETE: |
332 // auto_opened() may change after the download's initial transition to | 332 // GetAutoOpened() may change after the download's initial transition to |
333 // COMPLETE, so we check it before the idemopotency shield below. | 333 // COMPLETE, so we check it before the idemopotency shield below. |
334 if (download->auto_opened()) { | 334 if (download->GetAutoOpened()) { |
335 parent_shelf_->RemoveDownloadItem(this); // This will delete us! | 335 parent_shelf_->RemoveDownloadItem(this); // This will delete us! |
336 return; | 336 return; |
337 } | 337 } |
338 | 338 |
339 // We've already handled the completion specific actions; skip | 339 // We've already handled the completion specific actions; skip |
340 // doing the non-idempotent ones again. | 340 // doing the non-idempotent ones again. |
341 if (download_complete_) | 341 if (download_complete_) |
342 break; | 342 break; |
343 | 343 |
344 StopDownloadProgress(); | 344 StopDownloadProgress(); |
345 | 345 |
346 // Set up the widget as a drag source. | 346 // Set up the widget as a drag source. |
347 DownloadItemDrag::SetSource(body_.get(), get_download(), icon_large_); | 347 DownloadItemDrag::SetSource(body_.get(), get_download(), icon_large_); |
348 | 348 |
349 complete_animation_.Show(); | 349 complete_animation_.Show(); |
350 download_complete_ = true; | 350 download_complete_ = true; |
351 break; | 351 break; |
352 case DownloadItem::IN_PROGRESS: | 352 case DownloadItem::IN_PROGRESS: |
353 get_download()->is_paused() ? | 353 get_download()->IsPaused() ? |
354 StopDownloadProgress() : StartDownloadProgress(); | 354 StopDownloadProgress() : StartDownloadProgress(); |
355 break; | 355 break; |
356 default: | 356 default: |
357 NOTREACHED(); | 357 NOTREACHED(); |
358 } | 358 } |
359 | 359 |
360 status_text_ = UTF16ToUTF8(download_model_->GetStatusText()); | 360 status_text_ = UTF16ToUTF8(download_model_->GetStatusText()); |
361 UpdateStatusLabel(status_text_); | 361 UpdateStatusLabel(status_text_); |
362 } | 362 } |
363 | 363 |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
410 UpdateStatusLabel(status_text_); | 410 UpdateStatusLabel(status_text_); |
411 UpdateDangerWarning(); | 411 UpdateDangerWarning(); |
412 } | 412 } |
413 } | 413 } |
414 | 414 |
415 DownloadItem* DownloadItemGtk::get_download() { | 415 DownloadItem* DownloadItemGtk::get_download() { |
416 return download_model_->download(); | 416 return download_model_->download(); |
417 } | 417 } |
418 | 418 |
419 bool DownloadItemGtk::IsDangerous() { | 419 bool DownloadItemGtk::IsDangerous() { |
420 return get_download()->safety_state() == DownloadItem::DANGEROUS; | 420 return get_download()->GetSafetyState() == DownloadItem::DANGEROUS; |
421 } | 421 } |
422 | 422 |
423 // Download progress animation functions. | 423 // Download progress animation functions. |
424 | 424 |
425 void DownloadItemGtk::UpdateDownloadProgress() { | 425 void DownloadItemGtk::UpdateDownloadProgress() { |
426 progress_angle_ = (progress_angle_ + | 426 progress_angle_ = (progress_angle_ + |
427 download_util::kUnknownIncrementDegrees) % | 427 download_util::kUnknownIncrementDegrees) % |
428 download_util::kMaxDegrees; | 428 download_util::kMaxDegrees; |
429 gtk_widget_queue_draw(progress_area_.get()); | 429 gtk_widget_queue_draw(progress_area_.get()); |
430 } | 430 } |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
566 l10n_util::GetStringUTF16(IDS_PROMPT_UNSAFE_DOWNLOAD_URL); | 566 l10n_util::GetStringUTF16(IDS_PROMPT_UNSAFE_DOWNLOAD_URL); |
567 } else { | 567 } else { |
568 // It's a dangerous file type (e.g.: an executable). | 568 // It's a dangerous file type (e.g.: an executable). |
569 DCHECK(get_download()->GetDangerType() == | 569 DCHECK(get_download()->GetDangerType() == |
570 DownloadStateInfo::DANGEROUS_FILE); | 570 DownloadStateInfo::DANGEROUS_FILE); |
571 if (ChromeDownloadManagerDelegate::IsExtensionDownload(get_download())) { | 571 if (ChromeDownloadManagerDelegate::IsExtensionDownload(get_download())) { |
572 dangerous_warning = | 572 dangerous_warning = |
573 l10n_util::GetStringUTF16(IDS_PROMPT_DANGEROUS_DOWNLOAD_EXTENSION); | 573 l10n_util::GetStringUTF16(IDS_PROMPT_DANGEROUS_DOWNLOAD_EXTENSION); |
574 } else { | 574 } else { |
575 string16 elided_filename = ui::ElideFilename( | 575 string16 elided_filename = ui::ElideFilename( |
576 get_download()->target_name(), gfx::Font(), kTextWidth); | 576 get_download()->GetTargetName(), gfx::Font(), kTextWidth); |
577 dangerous_warning = | 577 dangerous_warning = |
578 l10n_util::GetStringFUTF16(IDS_PROMPT_DANGEROUS_DOWNLOAD, | 578 l10n_util::GetStringFUTF16(IDS_PROMPT_DANGEROUS_DOWNLOAD, |
579 elided_filename); | 579 elided_filename); |
580 } | 580 } |
581 } | 581 } |
582 | 582 |
583 if (theme_service_->UsingNativeTheme()) { | 583 if (theme_service_->UsingNativeTheme()) { |
584 gtk_util::SetLabelColor(dangerous_label_, NULL); | 584 gtk_util::SetLabelColor(dangerous_label_, NULL); |
585 } else { | 585 } else { |
586 GdkColor color = theme_service_->GetGdkColor( | 586 GdkColor color = theme_service_->GetGdkColor( |
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
884 get_download()->DangerousDownloadValidated(); | 884 get_download()->DangerousDownloadValidated(); |
885 } | 885 } |
886 | 886 |
887 void DownloadItemGtk::OnDangerousDecline(GtkWidget* button) { | 887 void DownloadItemGtk::OnDangerousDecline(GtkWidget* button) { |
888 UMA_HISTOGRAM_LONG_TIMES("clickjacking.discard_download", | 888 UMA_HISTOGRAM_LONG_TIMES("clickjacking.discard_download", |
889 base::Time::Now() - creation_time_); | 889 base::Time::Now() - creation_time_); |
890 if (get_download()->IsPartialDownload()) | 890 if (get_download()->IsPartialDownload()) |
891 get_download()->Cancel(true); | 891 get_download()->Cancel(true); |
892 get_download()->Delete(DownloadItem::DELETE_DUE_TO_USER_DISCARD); | 892 get_download()->Delete(DownloadItem::DELETE_DUE_TO_USER_DISCARD); |
893 } | 893 } |
OLD | NEW |