| Index: chrome/browser/download/download_status_updater_win.cc
|
| diff --git a/chrome/browser/download/download_status_updater_win.cc b/chrome/browser/download/download_status_updater_win.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4ab97b9d83dd1842117969410e72b73693e4d2ad
|
| --- /dev/null
|
| +++ b/chrome/browser/download/download_status_updater_win.cc
|
| @@ -0,0 +1,71 @@
|
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "chrome/browser/download/download_status_updater.h"
|
| +
|
| +#include <string>
|
| +
|
| +#include "base/logging.h"
|
| +#include "base/stl_util.h"
|
| +#include "base/string_number_conversions.h"
|
| +#include "base/win/metro.h"
|
| +#include "googleurl/src/gurl.h"
|
| +#include "grit/generated_resources.h"
|
| +#include "ui/base/l10n/l10n_util.h"
|
| +
|
| +namespace {
|
| +
|
| +const char kDownloadNotificationPrefix[] = "DownloadNotification";
|
| +int g_next_notification_id = 0;
|
| +
|
| +} // namespace
|
| +
|
| +void DownloadStatusUpdater::UpdateDownloadProgressForItemStarted(
|
| + content::DownloadItem* download) {
|
| +}
|
| +
|
| +void DownloadStatusUpdater::UpdateDownloadProgressForItemProgressed(
|
| + content::DownloadItem* download) {
|
| +}
|
| +
|
| +void DownloadStatusUpdater::UpdateDownloadProgressForItemCompleted(
|
| + content::DownloadItem* download) {
|
| + if (!base::win::IsMetroProcess())
|
| + return;
|
| +
|
| + if (download->GetState() != content::DownloadItem::COMPLETE)
|
| + return;
|
| +
|
| + if (download->GetOpenWhenComplete() ||
|
| + download->ShouldOpenFileBasedOnExtension() ||
|
| + download->IsTemporary() ||
|
| + download->GetAutoOpened())
|
| + return;
|
| +
|
| + // In Windows 8 metro mode display a metro style notification which
|
| + // informs the user that the download is complete.
|
| + HMODULE metro = base::win::GetMetroModule();
|
| + base::win::MetroNotification display_notification =
|
| + reinterpret_cast<base::win::MetroNotification>(
|
| + ::GetProcAddress(metro, "DisplayNotification"));
|
| + DCHECK(display_notification);
|
| + if (display_notification) {
|
| + string16 title = l10n_util::GetStringUTF16(
|
| + IDS_METRO_DOWNLOAD_COMPLETE_NOTIFICATION_TITLE);
|
| + string16 body = l10n_util::GetStringUTF16(
|
| + IDS_METRO_DOWNLOAD_COMPLETE_NOTIFICATION);
|
| +
|
| + // Dummy notification id. Every metro style notification needs a
|
| + // unique notification id.
|
| + std::string notification_id = kDownloadNotificationPrefix;
|
| + notification_id += base::IntToString(g_next_notification_id++);
|
| +
|
| + display_notification(download->GetURL().spec().c_str(),
|
| + "",
|
| + title.c_str(),
|
| + body.c_str(),
|
| + L"",
|
| + notification_id.c_str());
|
| + }
|
| +}
|
|
|