TabManagerDelegate: Better prioritize ARC processes.

Add new fields "is_focused" and "last_active_time" in struct RunningAppProcessInfo of  process.mojom so Chrome knows how to prioritize Android processes better.

BUG=625851
TEST=minnie

Review-Url: https://codereview.chromium.org/2095413002
Cr-Commit-Position: refs/heads/master@{#407444}
diff --git a/chrome/browser/chromeos/arc/arc_process.h b/chrome/browser/chromeos/arc/arc_process.h
index 01562a2..81a6e89b 100644
--- a/chrome/browser/chromeos/arc/arc_process.h
+++ b/chrome/browser/chromeos/arc/arc_process.h
@@ -5,6 +5,7 @@
 #ifndef CHROME_BROWSER_CHROMEOS_ARC_ARC_PROCESS_H_
 #define CHROME_BROWSER_CHROMEOS_ARC_ARC_PROCESS_H_
 
+#include <stdint.h>
 #include <string>
 #include <vector>
 
@@ -18,16 +19,23 @@
   ArcProcess(base::ProcessId nspid,
              base::ProcessId pid,
              const std::string& process_name,
-             mojom::ProcessState process_state);
+             mojom::ProcessState process_state,
+             bool is_focused,
+             int64_t last_activity_time);
   ~ArcProcess();
 
   ArcProcess(ArcProcess&& other);
   ArcProcess& operator=(ArcProcess&& other);
 
+  // Sort by descending importance.
+  bool operator<(const ArcProcess& rhs) const;
+
   base::ProcessId nspid() const { return nspid_; }
   base::ProcessId pid() const { return pid_; }
   const std::string& process_name() const { return process_name_; }
   mojom::ProcessState process_state() const { return process_state_; }
+  bool is_focused() const { return is_focused_; }
+  int64_t last_activity_time() const { return last_activity_time_; }
   std::vector<std::string>& packages() { return packages_; }
   const std::vector<std::string>& packages() const { return packages_; }
 
@@ -36,6 +44,12 @@
   base::ProcessId pid_;
   std::string process_name_;
   mojom::ProcessState process_state_;
+  // If the Android app is the focused window.
+  bool is_focused_;
+  // A monotonic timer recording the last time this process was active.
+  // Milliseconds since Android boot. This info is passed from Android
+  // ActivityManagerService via IPC.
+  int64_t last_activity_time_;
   std::vector<std::string> packages_;
 
   DISALLOW_COPY_AND_ASSIGN(ArcProcess);