diff --git a/tracker/componentdetail.py b/tracker/componentdetail.py
index 01f2469..177e548 100644
--- a/tracker/componentdetail.py
+++ b/tracker/componentdetail.py
@@ -1,7 +1,6 @@
-# Copyright 2016 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file or at
-# https://developers.google.com/open-source/licenses/bsd
+# Copyright 2016 The Chromium Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
 
 """A servlet for project and component owners to view and edit components."""
 from __future__ import print_function
@@ -20,6 +19,7 @@
 from framework import servlet
 from framework import timestr
 from framework import urls
+from gae_ts_mon import flask_handlers
 from tracker import component_helpers
 from tracker import tracker_bizobj
 from tracker import tracker_constants
@@ -86,7 +86,7 @@
         mr, component_def.modifier_id, component_def.modified)
 
     allow_edit = permissions.CanEditComponentDef(
-        mr.auth.effective_ids, mr.perms, mr.project, component_def, config)
+        mr, self.services, component_def, config)
 
     subcomponents = tracker_bizobj.FindDescendantComponents(
         config, component_def)
@@ -111,7 +111,7 @@
         'created': created,
         'modifier': modifier,
         'modified': modified,
-        }
+    }
 
   def ProcessFormData(self, mr, post_data):
     """Validate and store the contents of the issues tracker admin page.
@@ -125,7 +125,7 @@
     """
     config, component_def = self._GetComponentDef(mr)
     allow_edit = permissions.CanEditComponentDef(
-        mr.auth.effective_ids, mr.perms, mr.project, component_def, config)
+        mr, self.services, component_def, config)
     if not allow_edit:
       raise permissions.PermissionException(
           'User is not allowed to edit or delete this component')
@@ -244,3 +244,9 @@
     return framework_helpers.FormatAbsoluteURL(
         mr, urls.COMPONENT_DETAIL,
         component=new_path, saved=1, ts=int(time.time()))
+
+  def GetComponentDetailPage(self, **kwargs):
+    return self.handler(**kwargs)
+
+  def PostComponentDetailPage(self, **kwargs):
+    return self.handler(**kwargs)
