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

Unified Diff: chrome/browser/chromeos/drive/drive_integration_service.cc

Issue 306023012: Enable Drive integration service in incognito windows. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/drive/drive_integration_service.cc
diff --git a/chrome/browser/chromeos/drive/drive_integration_service.cc b/chrome/browser/chromeos/drive/drive_integration_service.cc
index 9ea18aa4a526ab817859a2c3495a7fdbbfb196e5..3d16655d3030e47b695cc6387d0ab870abab0d3c 100644
--- a/chrome/browser/chromeos/drive/drive_integration_service.cc
+++ b/chrome/browser/chromeos/drive/drive_integration_service.cc
@@ -11,6 +11,7 @@
#include "base/strings/stringprintf.h"
#include "base/threading/sequenced_worker_pool.h"
#include "chrome/browser/browser_process.h"
+#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/chromeos/drive/debug_info_collector.h"
#include "chrome/browser/chromeos/drive/download_handler.h"
#include "chrome/browser/chromeos/drive/file_cache.h"
@@ -30,6 +31,7 @@
#include "chrome/browser/drive/drive_notification_manager.h"
#include "chrome/browser/drive/drive_notification_manager_factory.h"
#include "chrome/browser/drive/event_logger.h"
+#include "chrome/browser/profiles/incognito_helpers.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
#include "chrome/browser/signin/signin_manager_factory.h"
@@ -40,6 +42,7 @@
#include "components/signin/core/browser/signin_manager.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h"
+#include "content/public/browser/notification_service.h"
#include "content/public/common/user_agent.h"
#include "google_apis/drive/auth_service.h"
#include "google_apis/drive/gdata_wapi_url_generator.h"
@@ -221,6 +224,7 @@ DriveIntegrationService::DriveIntegrationService(
test_cache_root : util::GetCacheRootPath(profile)),
weak_ptr_factory_(this) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ DCHECK(profile && !profile->IsOffTheRecord());
logger_.reset(new EventLogger);
base::SequencedWorkerPool* blocking_pool = BrowserThread::GetBlockingPool();
@@ -508,6 +512,7 @@ void DriveIntegrationService::InitializeAfterMetadataInitialized(
return;
}
+ // Initialize Download Handler for hooking downloads to the Drive folder.
content::DownloadManager* download_manager =
g_browser_process->download_status_updater() ?
BrowserContext::GetDownloadManager(profile_) : NULL;
@@ -515,6 +520,21 @@ void DriveIntegrationService::InitializeAfterMetadataInitialized(
download_manager,
cache_root_directory_.Append(kTemporaryFileDirectory));
+ // Installs the handler also to incognito profile.
hashimoto 2014/06/03 06:10:32 nit-picking-nit: s/Installs/Install/
kinaba 2014/06/03 06:50:32 Done.
+ if (g_browser_process->download_status_updater()) {
+ if (profile_->HasOffTheRecordProfile()) {
+ download_handler_->ObserveIncognitoDownloadManager(
+ BrowserContext::GetDownloadManager(
+ profile_->GetOffTheRecordProfile()));
+ } else {
+ profile_notification_registrar_.reset(new content::NotificationRegistrar);
+ profile_notification_registrar_->Add(
+ this,
+ chrome::NOTIFICATION_PROFILE_CREATED,
+ content::NotificationService::AllSources());
+ }
+ }
+
// Register for Google Drive invalidation notifications.
DriveNotificationManager* drive_notification_manager =
DriveNotificationManagerFactory::GetForBrowserContext(profile_);
@@ -548,6 +568,24 @@ void DriveIntegrationService::AvoidDriveAsDownloadDirecotryPreference() {
}
}
+void DriveIntegrationService::Observe(
+ int type,
+ const content::NotificationSource& source,
+ const content::NotificationDetails& details) {
+ if (type == chrome::NOTIFICATION_PROFILE_CREATED) {
+ Profile* created_profile = content::Source<Profile>(source).ptr();
+ if (created_profile->IsOffTheRecord() &&
+ created_profile->IsSameProfile(profile_)) {
+ download_handler_->ObserveIncognitoDownloadManager(
+ BrowserContext::GetDownloadManager(created_profile));
+ profile_notification_registrar_->Remove(
+ this,
+ chrome::NOTIFICATION_PROFILE_CREATED,
+ content::NotificationService::AllSources());
+ }
+ }
+}
+
//===================== DriveIntegrationServiceFactory =======================
DriveIntegrationServiceFactory::FactoryCallback*
@@ -607,6 +645,11 @@ DriveIntegrationServiceFactory::DriveIntegrationServiceFactory()
DriveIntegrationServiceFactory::~DriveIntegrationServiceFactory() {
}
+content::BrowserContext* DriveIntegrationServiceFactory::GetBrowserContextToUse(
+ content::BrowserContext* context) const {
+ return chrome::GetBrowserContextRedirectedInIncognito(context);
+}
+
KeyedService* DriveIntegrationServiceFactory::BuildServiceInstanceFor(
content::BrowserContext* context) const {
Profile* profile = Profile::FromBrowserContext(context);

Powered by Google App Engine
This is Rietveld 408576698