Simplify file tracing end events.

R=oysteine@chromium.org
BUG=none
TEST=pathless file trace events with size work

Review URL: https://codereview.chromium.org/1149083012

Cr-Commit-Position: refs/heads/master@{#333498}


CrOS-Libchrome-Original-Commit: 97f619f66b30bcafe0fd211f1e09bcf6ae4f325d
diff --git a/base/files/file_tracing.cc b/base/files/file_tracing.cc
index a1919c4..c25772d 100644
--- a/base/files/file_tracing.cc
+++ b/base/files/file_tracing.cc
@@ -27,13 +27,11 @@
     g_provider->FileTracingDisable(this);
 }
 
-FileTracing::ScopedTrace::ScopedTrace() : initialized_(false) {}
+FileTracing::ScopedTrace::ScopedTrace() : id_(nullptr) {}
 
 FileTracing::ScopedTrace::~ScopedTrace() {
-  if (initialized_ && g_provider) {
-    g_provider->FileTracingEventEnd(
-        name_, &file_->trace_enabler_, file_->path_, size_);
-  }
+  if (id_ && g_provider)
+    g_provider->FileTracingEventEnd(name_, id_);
 }
 
 bool FileTracing::ScopedTrace::ShouldInitialize() const {
@@ -42,15 +40,13 @@
 
 void FileTracing::ScopedTrace::Initialize(
     const char* name, File* file, int64 size) {
-  file_ = file;
-  name_ = name;
-  size_ = size;
-  initialized_ = true;
+  if (!g_provider)
+    return;
 
-  if (g_provider) {
-    g_provider->FileTracingEventBegin(
-        name_, &file_->trace_enabler_, file_->path_, size_);
-  }
+  id_ = &file->trace_enabler_;
+  name_ = name;
+
+  g_provider->FileTracingEventBegin(name_, id_, file->path_, size);
 }
 
 }  // namespace base
diff --git a/base/files/file_tracing.h b/base/files/file_tracing.h
index 8452037..149bd78 100644
--- a/base/files/file_tracing.h
+++ b/base/files/file_tracing.h
@@ -37,16 +37,13 @@
     virtual void FileTracingDisable(void* id) = 0;
 
     // Begins an event for |id| with |name|. |path| tells where in the directory
-    // structure the event is happening (and may be blank). |size| is reported
-    // if not 0.
+    // structure the event is happening (and may be blank). |size| is the number
+    // of bytes involved in the event.
     virtual void FileTracingEventBegin(
         const char* name, void* id, const FilePath& path, int64 size) = 0;
 
-    // Ends an event for |id| with |name|. |path| tells where in the directory
-    // structure the event is happening (and may be blank). |size| is reported
-    // if not 0.
-    virtual void FileTracingEventEnd(
-        const char* name, void* id, const FilePath& path, int64 size) = 0;
+    // Ends an event for |id| with |name|.
+    virtual void FileTracingEventEnd(const char* name, void* id) = 0;
   };
 
   // Sets a global file tracing provider to query categories and record events.
@@ -67,23 +64,21 @@
     // Whether this trace should be initialized or not.
     bool ShouldInitialize() const;
 
-    // Called only if the tracing category is enabled.
-    void Initialize(const char* event, File* file, int64 size);
+    // Called only if the tracing category is enabled. |name| is the name of the
+    // event to trace (e.g. "Read", "Write") and must have an application
+    // lifetime (e.g. static or literal). |file| is the file being traced; must
+    // outlive this class. |size| is the size (in bytes) of this event.
+    void Initialize(const char* name, File* file, int64 size);
 
    private:
-    // True if |Initialize()| has been called. Don't touch |path_|, |event_|,
-    // or |bytes_| if |initialized_| is false.
-    bool initialized_;
+    // The ID of this trace. Based on the |file| passed to |Initialize()|. Must
+    // outlive this class.
+    void* id_;
 
-    // The event name to trace (e.g. "Read", "Write"). Prefixed with "File".
+    // The name of the event to trace (e.g. "Read", "Write"). Prefixed with
+    // "File".
     const char* name_;
 
-    // The file being traced. Must outlive this class.
-    File* file_;
-
-    // The size (in bytes) of this trace. Not reported if 0.
-    int64 size_;
-
     DISALLOW_COPY_AND_ASSIGN(ScopedTrace);
   };