12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- /*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
- */
- package org.apache.cordova.file;
-
- import android.util.SparseArray;
-
- import org.apache.cordova.CallbackContext;
-
- /**
- * Holds pending runtime permission requests
- */
- class PendingRequests {
- private int currentReqId = 0;
- private SparseArray<Request> requests = new SparseArray<Request>();
-
- /**
- * Creates a request and adds it to the array of pending requests. Each created request gets a
- * unique result code for use with requestPermission()
- * @param rawArgs The raw arguments passed to the plugin
- * @param action The action this request corresponds to (get file, etc.)
- * @param callbackContext The CallbackContext for this plugin call
- * @return The request code that can be used to retrieve the Request object
- */
- public synchronized int createRequest(String rawArgs, int action, CallbackContext callbackContext) {
- Request req = new Request(rawArgs, action, callbackContext);
- requests.put(req.requestCode, req);
- return req.requestCode;
- }
-
- /**
- * Gets the request corresponding to this request code and removes it from the pending requests
- * @param requestCode The request code for the desired request
- * @return The request corresponding to the given request code or null if such a
- * request is not found
- */
- public synchronized Request getAndRemove(int requestCode) {
- Request result = requests.get(requestCode);
- requests.remove(requestCode);
- return result;
- }
-
- /**
- * Holds the options and CallbackContext for a call made to the plugin.
- */
- public class Request {
-
- // Unique int used to identify this request in any Android permission callback
- private int requestCode;
-
- // Action to be performed after permission request result
- private int action;
-
- // Raw arguments passed to plugin
- private String rawArgs;
-
- // The callback context for this plugin request
- private CallbackContext callbackContext;
-
- private Request(String rawArgs, int action, CallbackContext callbackContext) {
- this.rawArgs = rawArgs;
- this.action = action;
- this.callbackContext = callbackContext;
- this.requestCode = currentReqId ++;
- }
-
- public int getAction() {
- return this.action;
- }
-
- public String getRawArgs() {
- return rawArgs;
- }
-
- public CallbackContext getCallbackContext() {
- return callbackContext;
- }
- }
- }
|