Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 package org.chromium.chrome.browser.feedback; | 5 package org.chromium.chrome.browser.feedback; |
| 6 | 6 |
| 7 import android.app.Activity; | 7 import android.app.Activity; |
| 8 import android.graphics.Bitmap; | 8 import android.graphics.Bitmap; |
| 9 import android.os.Bundle; | 9 import android.os.Bundle; |
| 10 import android.os.SystemClock; | 10 import android.os.SystemClock; |
| 11 import android.text.TextUtils; | 11 import android.text.TextUtils; |
| 12 | 12 |
| 13 import org.chromium.base.ThreadUtils; | 13 import org.chromium.base.ThreadUtils; |
| 14 import org.chromium.base.VisibleForTesting; | 14 import org.chromium.base.VisibleForTesting; |
| 15 import org.chromium.base.metrics.StatisticsRecorderAndroid; | |
| 15 import org.chromium.blimp_public.BlimpClientContext; | 16 import org.chromium.blimp_public.BlimpClientContext; |
| 16 import org.chromium.chrome.browser.blimp.BlimpClientContextFactory; | 17 import org.chromium.chrome.browser.blimp.BlimpClientContextFactory; |
| 17 import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings; | 18 import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings; |
| 18 import org.chromium.chrome.browser.profiles.Profile; | 19 import org.chromium.chrome.browser.profiles.Profile; |
| 19 import org.chromium.components.variations.VariationsAssociatedData; | 20 import org.chromium.components.variations.VariationsAssociatedData; |
| 20 | 21 |
| 21 import java.util.HashMap; | 22 import java.util.HashMap; |
| 22 import java.util.Map; | 23 import java.util.Map; |
| 23 | 24 |
| 24 import javax.annotation.Nullable; | 25 import javax.annotation.Nullable; |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 65 * An optional description for the feedback report. | 66 * An optional description for the feedback report. |
| 66 */ | 67 */ |
| 67 private String mDescription; | 68 private String mDescription; |
| 68 | 69 |
| 69 /** | 70 /** |
| 70 * An optional screenshot for the feedback report. | 71 * An optional screenshot for the feedback report. |
| 71 */ | 72 */ |
| 72 private Bitmap mScreenshot; | 73 private Bitmap mScreenshot; |
| 73 | 74 |
| 74 /** | 75 /** |
| 76 * All the registered histograms as JSON text. | |
| 77 */ | |
| 78 private String mHistograms; | |
| 79 | |
| 80 /** | |
| 75 * A flag indicating whether gathering connection data has finished. | 81 * A flag indicating whether gathering connection data has finished. |
| 76 */ | 82 */ |
| 77 private boolean mConnectivityTaskFinished; | 83 private boolean mConnectivityTaskFinished; |
| 78 | 84 |
| 79 /** | 85 /** |
| 80 * A flag indicating whether taking a screenshot has finished. | 86 * A flag indicating whether taking a screenshot has finished. |
| 81 */ | 87 */ |
| 82 private boolean mScreenshotTaskFinished; | 88 private boolean mScreenshotTaskFinished; |
| 83 | 89 |
| 84 /** | 90 /** |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 121 mCallback = callback; | 127 mCallback = callback; |
| 122 mCollectionStartTime = SystemClock.elapsedRealtime(); | 128 mCollectionStartTime = SystemClock.elapsedRealtime(); |
| 123 init(activity); | 129 init(activity); |
| 124 } | 130 } |
| 125 | 131 |
| 126 @VisibleForTesting | 132 @VisibleForTesting |
| 127 void init(Activity activity) { | 133 void init(Activity activity) { |
| 128 postTimeoutTask(); | 134 postTimeoutTask(); |
| 129 mConnectivityTask = ConnectivityTask.create(mProfile, CONNECTIVITY_CHECK _TIMEOUT_MS, this); | 135 mConnectivityTask = ConnectivityTask.create(mProfile, CONNECTIVITY_CHECK _TIMEOUT_MS, this); |
| 130 ScreenshotTask.create(activity, this); | 136 ScreenshotTask.create(activity, this); |
| 137 if (!mProfile.isOffTheRecord()) { | |
| 138 mHistograms = StatisticsRecorderAndroid.toJson(); | |
| 139 } | |
| 131 } | 140 } |
| 132 | 141 |
| 133 /** | 142 /** |
| 134 * {@link ConnectivityTask.ConnectivityResult} implementation. | 143 * {@link ConnectivityTask.ConnectivityResult} implementation. |
| 135 */ | 144 */ |
| 136 @Override | 145 @Override |
| 137 public void onResult(ConnectivityTask.FeedbackData feedbackData) { | 146 public void onResult(ConnectivityTask.FeedbackData feedbackData) { |
| 138 ThreadUtils.assertOnUiThread(); | 147 ThreadUtils.assertOnUiThread(); |
| 139 mConnectivityTaskFinished = true; | 148 mConnectivityTaskFinished = true; |
| 140 Map<String, String> connectivityMap = feedbackData.toMap(); | 149 Map<String, String> connectivityMap = feedbackData.toMap(); |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 225 | 234 |
| 226 /** | 235 /** |
| 227 * @return the screenshot to use for the feedback report. | 236 * @return the screenshot to use for the feedback report. |
| 228 */ | 237 */ |
| 229 @VisibleForTesting | 238 @VisibleForTesting |
| 230 public Bitmap getScreenshot() { | 239 public Bitmap getScreenshot() { |
| 231 ThreadUtils.assertOnUiThread(); | 240 ThreadUtils.assertOnUiThread(); |
| 232 return mScreenshot; | 241 return mScreenshot; |
| 233 } | 242 } |
| 234 | 243 |
| 244 public String getHistograms() { | |
|
nyquist
2016/10/03 20:55:38
Nit: Add a comment as to what type of data this is
tbansal1
2016/10/04 03:34:11
I added a comment. Let me know if it is insufficie
| |
| 245 return mHistograms; | |
| 246 } | |
| 247 | |
| 235 /** | 248 /** |
| 236 * @return the collected data as a {@link Bundle}. | 249 * @return the collected data as a {@link Bundle}. |
| 237 */ | 250 */ |
| 238 @VisibleForTesting | 251 @VisibleForTesting |
| 239 public Bundle getBundle() { | 252 public Bundle getBundle() { |
| 240 ThreadUtils.assertOnUiThread(); | 253 ThreadUtils.assertOnUiThread(); |
| 241 addUrl(); | 254 addUrl(); |
| 242 addConnectivityData(); | 255 addConnectivityData(); |
| 243 addDataReductionProxyData(); | 256 addDataReductionProxyData(); |
| 244 addVariationsData(); | 257 addVariationsData(); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 279 } | 292 } |
| 280 | 293 |
| 281 private Bundle asBundle() { | 294 private Bundle asBundle() { |
| 282 Bundle bundle = new Bundle(); | 295 Bundle bundle = new Bundle(); |
| 283 for (Map.Entry<String, String> entry : mData.entrySet()) { | 296 for (Map.Entry<String, String> entry : mData.entrySet()) { |
| 284 bundle.putString(entry.getKey(), entry.getValue()); | 297 bundle.putString(entry.getKey(), entry.getValue()); |
| 285 } | 298 } |
| 286 return bundle; | 299 return bundle; |
| 287 } | 300 } |
| 288 } | 301 } |
| OLD | NEW |