Fix for management API related to escalated permissions disabled extensions

The general approach is to require user gesture and put up the confirmation UI if an extension wants to re-enable a disabled-due-to-permissions-escalation extension.

Also added some new infrastructure for making this easier to test.

(This is re-landing http://codereview.chromium.org/8423069/ which had a compile
 error on the cros_tegra2 bot)

BUG=102579
TEST=See bug

[email protected]

Review URL: http://codereview.chromium.org/8488012

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@110376 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/extension_function_test_utils.h b/chrome/browser/extensions/extension_function_test_utils.h
index 3b24b5d..ef005a4 100644
--- a/chrome/browser/extensions/extension_function_test_utils.h
+++ b/chrome/browser/extensions/extension_function_test_utils.h
@@ -10,6 +10,7 @@
 
 #include "base/memory/ref_counted.h"
 
+class AsyncExtensionFunction;
 class Browser;
 class Extension;
 class UIThreadExtensionFunction;
@@ -84,6 +85,13 @@
                  Browser* browser,
                  RunFunctionFlags flags);
 
+// Similar to RunFunction, but doesn't return until |function| calls
+// SendResponse. Returns the value |function| passed to SendResponse.
+bool RunAsyncFunction(AsyncExtensionFunction* function,
+                      const std::string& args,
+                      Browser* browser,
+                      RunFunctionFlags flags);
+
 } // namespace extension_function_test_utils
 
 #endif  // CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_TEST_UTILS_H_