Commit 53d35d64 authored by Justin Cohen's avatar Justin Cohen Committed by Commit Bot

[ios] Add more metrics for reading and write session plist times.

Record the time taken to read a stored session window, or write one to a file.

Bug: 1007337, 1010609
Change-Id: I8f98348c51b8b407b60d9514008431c2fa564d87
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1860303Reviewed-by: default avatarMark Pearson <mpearson@chromium.org>
Reviewed-by: default avatarRohit Rao <rohitrao@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#706774}
parent 255d497a
...@@ -13,11 +13,13 @@ ...@@ -13,11 +13,13 @@
#include "base/logging.h" #include "base/logging.h"
#import "base/mac/foundation_util.h" #import "base/mac/foundation_util.h"
#include "base/memory/ref_counted.h" #include "base/memory/ref_counted.h"
#include "base/metrics/histogram_functions.h"
#include "base/metrics/histogram_macros.h" #include "base/metrics/histogram_macros.h"
#include "base/sequenced_task_runner.h" #include "base/sequenced_task_runner.h"
#include "base/strings/sys_string_conversions.h" #include "base/strings/sys_string_conversions.h"
#include "base/task/post_task.h" #include "base/task/post_task.h"
#include "base/threading/scoped_blocking_call.h" #include "base/threading/scoped_blocking_call.h"
#include "base/time/time.h"
#import "ios/chrome/browser/sessions/session_ios.h" #import "ios/chrome/browser/sessions/session_ios.h"
#import "ios/chrome/browser/sessions/session_window_ios.h" #import "ios/chrome/browser/sessions/session_window_ios.h"
#import "ios/web/public/session/crw_navigation_item_storage.h" #import "ios/web/public/session/crw_navigation_item_storage.h"
...@@ -130,7 +132,11 @@ NSString* const kRootObjectKey = @"root"; // Key for the root object. ...@@ -130,7 +132,11 @@ NSString* const kRootObjectKey = @"root"; // Key for the root object.
- (SessionIOS*)loadSessionFromDirectory:(NSString*)directory { - (SessionIOS*)loadSessionFromDirectory:(NSString*)directory {
NSString* sessionPath = [[self class] sessionPathForDirectory:directory]; NSString* sessionPath = [[self class] sessionPathForDirectory:directory];
return [self loadSessionFromPath:sessionPath]; base::TimeTicks start_time = base::TimeTicks::Now();
SessionIOS* session = [self loadSessionFromPath:sessionPath];
UmaHistogramTimes("Session.WebStates.ReadFromFileTime",
base::TimeTicks::Now() - start_time);
return session;
} }
- (SessionIOS*)loadSessionFromPath:(NSString*)sessionPath { - (SessionIOS*)loadSessionFromPath:(NSString*)sessionPath {
...@@ -281,12 +287,15 @@ NSString* const kRootObjectKey = @"root"; // Key for the root object. ...@@ -281,12 +287,15 @@ NSString* const kRootObjectKey = @"root"; // Key for the root object.
NSDataWritingOptions options = NSDataWritingOptions options =
NSDataWritingAtomic | NSDataWritingFileProtectionComplete; NSDataWritingAtomic | NSDataWritingFileProtectionComplete;
base::TimeTicks start_time = base::TimeTicks::Now();
if (![sessionData writeToFile:sessionPath options:options error:&error]) { if (![sessionData writeToFile:sessionPath options:options error:&error]) {
NOTREACHED() << "Error writing session file: " NOTREACHED() << "Error writing session file: "
<< base::SysNSStringToUTF8(sessionPath) << ": " << base::SysNSStringToUTF8(sessionPath) << ": "
<< base::SysNSStringToUTF8([error description]); << base::SysNSStringToUTF8([error description]);
return; return;
} }
UmaHistogramTimes("Session.WebStates.WriteToFileTime",
base::TimeTicks::Now() - start_time);
} }
@end @end
...@@ -131720,6 +131720,16 @@ should be kept until we remove incident reporting. --> ...@@ -131720,6 +131720,16 @@ should be kept until we remove incident reporting. -->
</summary> </summary>
</histogram> </histogram>
<histogram name="Session.WebStates.ReadFromFileTime" units="ms"
expires_after="2020-06-30">
<owner>justincohen@chromium.org</owner>
<owner>rohitrao@chromium.org</owner>
<summary>
The time needed to read iOS session webState data from a file. It's recorded
every time a webState is restored, typically on app startup.
</summary>
</histogram>
<histogram name="Session.WebStates.SerializedSize" units="KB" <histogram name="Session.WebStates.SerializedSize" units="KB"
expires_after="2020-06-30"> expires_after="2020-06-30">
<owner>justincohen@chromium.org</owner> <owner>justincohen@chromium.org</owner>
...@@ -131731,6 +131741,17 @@ should be kept until we remove incident reporting. --> ...@@ -131731,6 +131741,17 @@ should be kept until we remove incident reporting. -->
</summary> </summary>
</histogram> </histogram>
<histogram name="Session.WebStates.WriteToFileTime" units="ms"
expires_after="2020-06-30">
<owner>justincohen@chromium.org</owner>
<owner>rohitrao@chromium.org</owner>
<summary>
The time needed to write iOS session webState data to a file. It's recorded
every time the file is written to storage, which happens on page loads, tab
changes and app backgrounding.
</summary>
</histogram>
<histogram name="SessionCrashed.Bubble" enum="SessionCrashedBubbleUserAction" <histogram name="SessionCrashed.Bubble" enum="SessionCrashedBubbleUserAction"
expires_after="M77"> expires_after="M77">
<owner>yiyaoliu@chromium.org</owner> <owner>yiyaoliu@chromium.org</owner>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment