Index: android_webview/native/permission/permission_request_handler.h |
diff --git a/android_webview/native/permission/permission_request_handler.h b/android_webview/native/permission/permission_request_handler.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8afd484d6035bb1b3fc217258b30398d2426515e |
--- /dev/null |
+++ b/android_webview/native/permission/permission_request_handler.h |
@@ -0,0 +1,55 @@ |
+// Copyright 2014 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. |
+ |
+#ifndef ANDROID_WEBVIEW_NATIVE_PERMISSION_PERMISSION_REQUEST_HANDLER_H |
+#define ANDROID_WEBVIEW_NATIVE_PERMISSION_PERMISSION_REQUEST_HANDLER_H |
+ |
+#include <vector> |
+ |
+#include "android_webview/native/permission/permission_request_handler_client.h" |
+ |
+namespace android_webview { |
+ |
+// This class is used to send the permission requests, or cancel ongoing |
+// requests. |
+// It is owned by AwContents and has 1x1 mapping to AwContents. All methods |
+// are running on UI thread. |
+class PermissionRequestHandler { |
+ public: |
+ PermissionRequestHandler(PermissionRequestHandlerClient* aw_contents); |
+ virtual ~PermissionRequestHandler(); |
+ |
+ // Send the given |request| to AwContentsClient. |
+ void SendRequest(const scoped_refptr<AwPermissionRequest>& request); |
+ |
+ // Cancel the ongoing request initiated by |origin| for accessing |resources|. |
+ void CancelRequest(const GURL& origin, int64 resources); |
+ |
+ private: |
+ friend class TestPermissionRequestHandler; |
+ |
+ // Called by AwPermissionRequest when request was handled. |
+ void NotifyRequestProcessed(scoped_refptr<AwPermissionRequest> request); |
+ |
+ typedef std::vector<scoped_refptr<AwPermissionRequest> >::iterator |
+ RequestIterator; |
+ |
+ // Return the request initiated by |origin| for accessing |resources|. |
+ RequestIterator FindRequest(const GURL& origin, int64 resources); |
+ |
+ // Cancel the given request. |
+ void CancelRequest(RequestIterator i); |
+ |
+ // The associated AwContents. |
+ PermissionRequestHandlerClient* client_; |
+ |
+ // A list of ongoing requests. |
+ std::vector<scoped_refptr<AwPermissionRequest> > requests_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(PermissionRequestHandler); |
+}; |
+ |
+} // namespace android_webivew |
+ |
+#endif // ANDROID_WEBVIEW_NATIVE_PERMISSION_PERMISSION_REQUEST_HANDLER_H |