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/download/chrome_download_manager_delegate.h" | 5 #include "chrome/browser/download/chrome_download_manager_delegate.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
293 | 293 |
294 bool ChromeDownloadManagerDelegate::ShouldCompleteDownload( | 294 bool ChromeDownloadManagerDelegate::ShouldCompleteDownload( |
295 DownloadItem* item, | 295 DownloadItem* item, |
296 const base::Closure& user_complete_callback) { | 296 const base::Closure& user_complete_callback) { |
297 return IsDownloadReadyForCompletion(item, base::Bind( | 297 return IsDownloadReadyForCompletion(item, base::Bind( |
298 &ChromeDownloadManagerDelegate::ShouldCompleteDownloadInternal, this, | 298 &ChromeDownloadManagerDelegate::ShouldCompleteDownloadInternal, this, |
299 item->GetId(), user_complete_callback)); | 299 item->GetId(), user_complete_callback)); |
300 } | 300 } |
301 | 301 |
302 bool ChromeDownloadManagerDelegate::ShouldOpenDownload(DownloadItem* item) { | 302 bool ChromeDownloadManagerDelegate::ShouldOpenDownload(DownloadItem* item) { |
303 if (IsExtensionDownload(item)) { | 303 if (IsExtensionDownload(item)) { |
asanka
2012/05/24 16:05:37
Can you check if the ChromeDownloadManagerDelegate
Aaron Boodman
2012/05/24 23:55:38
Yeah, the test in the menu was incomplete. I remov
| |
304 // We can open extensions if either they came from the store, or | 304 scoped_refptr<CrxInstaller> crx_installer = |
305 // off-store-install is enabled. | 305 download_crx_util::OpenChromeExtension(profile_, *item); |
306 if (extensions::switch_utils::IsOffStoreInstallEnabled() || | |
307 WebstoreInstaller::GetAssociatedApproval(*item)) { | |
308 scoped_refptr<CrxInstaller> crx_installer = | |
309 download_crx_util::OpenChromeExtension(profile_, *item); | |
310 | 306 |
311 // CRX_INSTALLER_DONE will fire when the install completes. Observe() | 307 // CRX_INSTALLER_DONE will fire when the install completes. Observe() |
312 // will call DelayedDownloadOpened() on this item. If this DownloadItem | 308 // will call DelayedDownloadOpened() on this item. If this DownloadItem |
313 // is not around when CRX_INSTALLER_DONE fires, Complete() will not be | 309 // is not around when CRX_INSTALLER_DONE fires, Complete() will not be |
314 // called. | 310 // called. |
315 registrar_.Add(this, | 311 registrar_.Add(this, |
316 chrome::NOTIFICATION_CRX_INSTALLER_DONE, | 312 chrome::NOTIFICATION_CRX_INSTALLER_DONE, |
317 content::Source<CrxInstaller>(crx_installer.get())); | 313 content::Source<CrxInstaller>(crx_installer.get())); |
318 | 314 |
319 crx_installers_[crx_installer.get()] = item->GetId(); | 315 crx_installers_[crx_installer.get()] = item->GetId(); |
320 // The status text and percent complete indicator will change now | 316 // The status text and percent complete indicator will change now |
321 // that we are installing a CRX. Update observers so that they pick | 317 // that we are installing a CRX. Update observers so that they pick |
322 // up the change. | 318 // up the change. |
323 item->UpdateObservers(); | 319 item->UpdateObservers(); |
324 return false; | 320 return false; |
325 } | |
326 } | 321 } |
327 | 322 |
328 if (ShouldOpenWithWebIntents(item)) { | 323 if (ShouldOpenWithWebIntents(item)) { |
329 OpenWithWebIntent(item); | 324 OpenWithWebIntent(item); |
330 item->DelayedDownloadOpened(); | 325 item->DelayedDownloadOpened(); |
331 return false; | 326 return false; |
332 } | 327 } |
333 | 328 |
334 return true; | 329 return true; |
335 } | 330 } |
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
735 const DownloadItem& download, | 730 const DownloadItem& download, |
736 const DownloadStateInfo& state, | 731 const DownloadStateInfo& state, |
737 bool visited_referrer_before) { | 732 bool visited_referrer_before) { |
738 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 733 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
739 | 734 |
740 // Anything loaded directly from the address bar is OK. | 735 // Anything loaded directly from the address bar is OK. |
741 if (state.transition_type & content::PAGE_TRANSITION_FROM_ADDRESS_BAR) | 736 if (state.transition_type & content::PAGE_TRANSITION_FROM_ADDRESS_BAR) |
742 return false; | 737 return false; |
743 | 738 |
744 // Extensions that are not from the gallery are considered dangerous. | 739 // Extensions that are not from the gallery are considered dangerous. |
745 // When off-store install is disabled we skip this, since in this case, we | 740 // When off-store install is disabled we skip this, since in this case, we |
Yoyo Zhou
2012/05/24 17:30:35
I realize this isn't related to this change, but t
Aaron Boodman
2012/05/24 23:55:38
The point of the dangerous download bar in the cas
| |
746 // will not offer to install the extension. | 741 // will cancel the install later. |
747 if (extensions::switch_utils::IsOffStoreInstallEnabled() && | 742 if (extensions::switch_utils::IsOffStoreInstallEnabled() && |
748 IsExtensionDownload(&download) && | 743 IsExtensionDownload(&download) && |
749 !WebstoreInstaller::GetAssociatedApproval(download)) { | 744 !WebstoreInstaller::GetAssociatedApproval(download)) { |
750 return true; | 745 return true; |
751 } | 746 } |
752 | 747 |
753 // Anything the user has marked auto-open is OK if it's user-initiated. | 748 // Anything the user has marked auto-open is OK if it's user-initiated. |
754 if (ShouldOpenFileBasedOnExtension(state.suggested_path) && | 749 if (ShouldOpenFileBasedOnExtension(state.suggested_path) && |
755 state.has_user_gesture) | 750 state.has_user_gesture) |
756 return false; | 751 return false; |
(...skipping 12 matching lines...) Expand all Loading... | |
769 int32 download_id, int64 db_handle) { | 764 int32 download_id, int64 db_handle) { |
770 // It's not immediately obvious, but HistoryBackend::CreateDownload() can | 765 // It's not immediately obvious, but HistoryBackend::CreateDownload() can |
771 // call this function with an invalid |db_handle|. For instance, this can | 766 // call this function with an invalid |db_handle|. For instance, this can |
772 // happen when the history database is offline. We cannot have multiple | 767 // happen when the history database is offline. We cannot have multiple |
773 // DownloadItems with the same invalid db_handle, so we need to assign a | 768 // DownloadItems with the same invalid db_handle, so we need to assign a |
774 // unique |db_handle| here. | 769 // unique |db_handle| here. |
775 if (db_handle == DownloadItem::kUninitializedHandle) | 770 if (db_handle == DownloadItem::kUninitializedHandle) |
776 db_handle = download_history_->GetNextFakeDbHandle(); | 771 db_handle = download_history_->GetNextFakeDbHandle(); |
777 download_manager_->OnItemAddedToPersistentStore(download_id, db_handle); | 772 download_manager_->OnItemAddedToPersistentStore(download_id, db_handle); |
778 } | 773 } |
OLD | NEW |