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

Side by Side Diff: content/browser/android/download_controller_android_impl.cc

Issue 2058593002: Add UMA for studying download cancellation reasons (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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 unified diff | Download patch
OLDNEW
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 "content/browser/android/download_controller_android_impl.h" 5 #include "content/browser/android/download_controller_android_impl.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/android/context_utils.h" 10 #include "base/android/context_utils.h"
11 #include "base/android/jni_android.h" 11 #include "base/android/jni_android.h"
12 #include "base/android/jni_string.h" 12 #include "base/android/jni_string.h"
13 #include "base/bind.h" 13 #include "base/bind.h"
14 #include "base/lazy_instance.h" 14 #include "base/lazy_instance.h"
15 #include "base/logging.h" 15 #include "base/logging.h"
16 #include "base/metrics/histogram_macros.h"
16 #include "base/synchronization/lock.h" 17 #include "base/synchronization/lock.h"
17 #include "base/time/time.h" 18 #include "base/time/time.h"
18 #include "content/browser/android/content_view_core_impl.h" 19 #include "content/browser/android/content_view_core_impl.h"
19 #include "content/browser/android/deferred_download_observer.h" 20 #include "content/browser/android/deferred_download_observer.h"
20 #include "content/browser/download/download_item_impl.h" 21 #include "content/browser/download/download_item_impl.h"
21 #include "content/browser/download/download_manager_impl.h" 22 #include "content/browser/download/download_manager_impl.h"
22 #include "content/browser/loader/resource_dispatcher_host_impl.h" 23 #include "content/browser/loader/resource_dispatcher_host_impl.h"
23 #include "content/browser/renderer_host/render_process_host_impl.h" 24 #include "content/browser/renderer_host/render_process_host_impl.h"
24 #include "content/browser/renderer_host/render_view_host_delegate.h" 25 #include "content/browser/renderer_host/render_view_host_delegate.h"
25 #include "content/browser/renderer_host/render_view_host_impl.h" 26 #include "content/browser/renderer_host/render_view_host_impl.h"
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 jboolean granted) { 126 jboolean granted) {
126 DCHECK_CURRENTLY_ON(BrowserThread::UI); 127 DCHECK_CURRENTLY_ON(BrowserThread::UI);
127 DCHECK(callback_id); 128 DCHECK(callback_id);
128 129
129 // Convert java long long int to c++ pointer, take ownership. 130 // Convert java long long int to c++ pointer, take ownership.
130 std::unique_ptr< 131 std::unique_ptr<
131 DownloadControllerAndroid::AcquireFileAccessPermissionCallback> 132 DownloadControllerAndroid::AcquireFileAccessPermissionCallback>
132 cb(reinterpret_cast< 133 cb(reinterpret_cast<
133 DownloadControllerAndroid::AcquireFileAccessPermissionCallback*>( 134 DownloadControllerAndroid::AcquireFileAccessPermissionCallback*>(
134 callback_id)); 135 callback_id));
136 if (!granted) {
137 DownloadControllerAndroid::RecordDownloadCancelReason(
138 DownloadControllerAndroid::kNoStoragePermission);
139 }
135 cb->Run(granted); 140 cb->Run(granted);
136 } 141 }
137 142
138 struct DownloadControllerAndroidImpl::JavaObject { 143 struct DownloadControllerAndroidImpl::JavaObject {
139 ScopedJavaLocalRef<jobject> Controller(JNIEnv* env) { 144 ScopedJavaLocalRef<jobject> Controller(JNIEnv* env) {
140 return GetRealObject(env, obj); 145 return GetRealObject(env, obj);
141 } 146 }
142 jweak obj; 147 jweak obj;
143 }; 148 };
144 149
(...skipping 11 matching lines...) Expand all
156 } 161 }
157 162
158 //static 163 //static
159 void DownloadControllerAndroid::SetDownloadControllerAndroid( 164 void DownloadControllerAndroid::SetDownloadControllerAndroid(
160 DownloadControllerAndroid* download_controller) { 165 DownloadControllerAndroid* download_controller) {
161 base::AutoLock lock(g_download_controller_lock_.Get()); 166 base::AutoLock lock(g_download_controller_lock_.Get());
162 DownloadControllerAndroid::download_controller_ = download_controller; 167 DownloadControllerAndroid::download_controller_ = download_controller;
163 } 168 }
164 169
165 // static 170 // static
171 void DownloadControllerAndroid::RecordDownloadCancelReason(
172 DownloadCancelReason reason) {
173 UMA_HISTOGRAM_ENUMERATION(
174 "MobileDownload.CancelReason", reason, kCancelReasonMax);
175 }
176
177 // static
166 DownloadControllerAndroidImpl* DownloadControllerAndroidImpl::GetInstance() { 178 DownloadControllerAndroidImpl* DownloadControllerAndroidImpl::GetInstance() {
167 return base::Singleton<DownloadControllerAndroidImpl>::get(); 179 return base::Singleton<DownloadControllerAndroidImpl>::get();
168 } 180 }
169 181
170 DownloadControllerAndroidImpl::DownloadControllerAndroidImpl() 182 DownloadControllerAndroidImpl::DownloadControllerAndroidImpl()
171 : java_object_(NULL) { 183 : java_object_(NULL) {
172 } 184 }
173 185
174 DownloadControllerAndroidImpl::~DownloadControllerAndroidImpl() { 186 DownloadControllerAndroidImpl::~DownloadControllerAndroidImpl() {
175 if (java_object_) { 187 if (java_object_) {
(...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after
608 if (info) 620 if (info)
609 has_user_gesture = info->HasUserGesture(); 621 has_user_gesture = info->HasUserGesture();
610 } 622 }
611 623
612 DownloadControllerAndroidImpl::DownloadInfoAndroid::DownloadInfoAndroid( 624 DownloadControllerAndroidImpl::DownloadInfoAndroid::DownloadInfoAndroid(
613 const DownloadInfoAndroid& other) = default; 625 const DownloadInfoAndroid& other) = default;
614 626
615 DownloadControllerAndroidImpl::DownloadInfoAndroid::~DownloadInfoAndroid() {} 627 DownloadControllerAndroidImpl::DownloadInfoAndroid::~DownloadInfoAndroid() {}
616 628
617 } // namespace content 629 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698