[ledger] Deduplicate ExpiringToken definitions

Change-Id: Id286262ab3dae94c03cfe1f0f753ccea364ced98
diff --git a/src/ledger/bin/app/ledger_manager.cc b/src/ledger/bin/app/ledger_manager.cc
index dc845ce..ffdf85b2 100644
--- a/src/ledger/bin/app/ledger_manager.cc
+++ b/src/ledger/bin/app/ledger_manager.cc
@@ -19,6 +19,7 @@
 
 #include "src/ledger/bin/app/constants.h"
 #include "src/ledger/bin/app/page_utils.h"
+#include "src/ledger/bin/app/types.h"
 #include "src/ledger/bin/fidl/include/types.h"
 #include "src/ledger/bin/p2p_sync/public/page_communicator.h"
 #include "src/ledger/bin/storage/public/page_storage.h"
@@ -26,11 +27,6 @@
 namespace ledger {
 namespace {
 
-// A token that performs a given action on destruction.
-// ExpiringToken objects are used with internal page requests to notify the
-// PageManagerContainer that the requested PageManager is no longer used.
-using ExpiringToken = fit::deferred_action<fit::closure>;
-
 // A notifier for |PageUsageListener|.
 //
 // Given information about when internal and external page connections open and
diff --git a/src/ledger/bin/app/page_eviction_manager_impl.cc b/src/ledger/bin/app/page_eviction_manager_impl.cc
index ec689ea..a3da94f 100644
--- a/src/ledger/bin/app/page_eviction_manager_impl.cc
+++ b/src/ledger/bin/app/page_eviction_manager_impl.cc
@@ -381,8 +381,7 @@
   return status;
 }
 
-PageEvictionManagerImpl::ExpiringToken
-PageEvictionManagerImpl::NewExpiringToken() {
+ExpiringToken PageEvictionManagerImpl::NewExpiringToken() {
   ++pending_operations_;
   return ExpiringToken(callback::MakeScoped(weak_factory_.GetWeakPtr(), [this] {
     --pending_operations_;
diff --git a/src/ledger/bin/app/page_eviction_manager_impl.h b/src/ledger/bin/app/page_eviction_manager_impl.h
index af463983..00f14f5 100644
--- a/src/ledger/bin/app/page_eviction_manager_impl.h
+++ b/src/ledger/bin/app/page_eviction_manager_impl.h
@@ -16,6 +16,7 @@
 
 #include "src/ledger/bin/app/page_usage_db.h"
 #include "src/ledger/bin/app/page_utils.h"
+#include "src/ledger/bin/app/types.h"
 #include "src/ledger/bin/environment/environment.h"
 #include "src/ledger/bin/storage/public/db_factory.h"
 #include "src/ledger/lib/coroutine/coroutine.h"
@@ -59,10 +60,6 @@
       fit::function<void(storage::Status, PageWasEvicted)> callback) override;
 
  private:
-  // A token that performs a given action on destruction. ExpiringToken objects
-  // are used to keep track of pending operations.
-  using ExpiringToken = fit::deferred_action<fit::closure>;
-
   // A Completer allowing waiting until the target operation is completed.
   class Completer {
    public:
diff --git a/src/ledger/bin/app/types.h b/src/ledger/bin/app/types.h
index 033f33d..4f426a6 100644
--- a/src/ledger/bin/app/types.h
+++ b/src/ledger/bin/app/types.h
@@ -7,12 +7,17 @@
 
 #include <string>
 
+#include <lib/fit/defer.h>
+#include <lib/fit/function.h>
 #include <lib/zx/time.h>
 
 #include "src/ledger/bin/storage/public/types.h"
 
 namespace ledger {
 
+// A token that performs a given action on destruction.
+using ExpiringToken = fit::deferred_action<fit::closure>;
+
 // The result of a predicate, meant to be checked on a closed page. The result
 // is |YES| or |NO| depending on whether the predicate is satisfied or not. If
 // however the page was opened during the operation, |PAGE_OPENED| is returned.