Basic download shelf implementation on linux.
It shows and hides at appropriate times, and that's about it.
TEST=navigate to a savable page and select "save page as" from the page menu. Click the x. Save the page again. The shelf should pop up, go away, pop up again.
Review URL: http://codereview.chromium.org/38004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10927 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/tab_contents/tab_contents.cc b/chrome/browser/tab_contents/tab_contents.cc
index 7905364..1df337c 100644
--- a/chrome/browser/tab_contents/tab_contents.cc
+++ b/chrome/browser/tab_contents/tab_contents.cc
@@ -464,6 +464,13 @@
}
}
}
+#endif // defined(OS_WIN)
+
+void TabContents::ToolbarSizeChanged(bool is_animating) {
+ TabContentsDelegate* d = delegate();
+ if (d)
+ d->ToolbarSizeChanged(this, is_animating);
+}
void TabContents::SetDownloadShelfVisible(bool visible) {
if (shelf_visible_ != visible) {
@@ -483,32 +490,33 @@
ToolbarSizeChanged(false);
}
-void TabContents::ToolbarSizeChanged(bool is_animating) {
- TabContentsDelegate* d = delegate();
- if (d)
- d->ToolbarSizeChanged(this, is_animating);
-}
-
+#if defined(OS_WIN) || defined(OS_LINUX)
void TabContents::OnStartDownload(DownloadItem* download) {
DCHECK(download);
TabContents* tab_contents = this;
+// TODO(port): port contraining contents.
+#if defined(OS_WIN)
// Download in a constrained popup is shown in the tab that opened it.
TabContents* constraining_tab = delegate()->GetConstrainingContents(this);
if (constraining_tab)
tab_contents = constraining_tab;
+#endif
// GetDownloadShelf creates the download shelf if it was not yet created.
tab_contents->GetDownloadShelf()->AddDownload(
new DownloadItemModel(download));
tab_contents->SetDownloadShelfVisible(true);
+// TODO(port): port animatinos.
+#if defined(OS_WIN)
// This animation will delete itself when it finishes, or if we become hidden
// or destroyed.
if (IsWindowVisible(GetNativeView())) { // For minimized windows, unit
// tests, etc.
new DownloadStartedAnimation(tab_contents);
}
+#endif
}
DownloadShelf* TabContents::GetDownloadShelf() {
@@ -523,6 +531,20 @@
tab_contents->ReleaseDownloadShelf();
}
+void TabContents::ReleaseDownloadShelf() {
+ download_shelf_.release();
+}
+
+// static
+void TabContents::MigrateShelf(TabContents* from, TabContents* to) {
+ bool was_shelf_visible = from->IsDownloadShelfVisible();
+ if (was_shelf_visible)
+ to->MigrateShelfFrom(from);
+ to->SetDownloadShelfVisible(was_shelf_visible);
+}
+#endif // defined(OS_WIN) || defined(OS_LINUX)
+
+#if defined(OS_WIN)
void TabContents::WillClose(ConstrainedWindow* window) {
ConstrainedWindowList::iterator it =
find(child_windows_.begin(), child_windows_.end(), window);
@@ -555,14 +577,6 @@
ExpireInfoBars(committed_details);
}
-// static
-void TabContents::MigrateShelf(TabContents* from, TabContents* to) {
- bool was_shelf_visible = from->IsDownloadShelfVisible();
- if (was_shelf_visible)
- to->MigrateShelfFrom(from);
- to->SetDownloadShelfVisible(was_shelf_visible);
-}
-
void TabContents::SetIsLoading(bool is_loading,
LoadNotificationDetails* details) {
if (is_loading == is_loading_)
@@ -604,10 +618,6 @@
blocked_popups_->RepositionConstrainedWindowTo(anchor_position);
}
-void TabContents::ReleaseDownloadShelf() {
- download_shelf_.release();
-}
-
bool TabContents::ShowingBlockedPopupNotification() const {
return blocked_popups_ != NULL &&
blocked_popups_->GetTabContentsCount() != 0;