Index: android_webview/native/permission/permission_request_handler.cc |
diff --git a/android_webview/native/permission/permission_request_handler.cc b/android_webview/native/permission/permission_request_handler.cc |
deleted file mode 100644 |
index 17f4212b89670660477e90920cf2f2f955ad0b27..0000000000000000000000000000000000000000 |
--- a/android_webview/native/permission/permission_request_handler.cc |
+++ /dev/null |
@@ -1,142 +0,0 @@ |
-// 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. |
- |
-#include "android_webview/native/permission/permission_request_handler.h" |
- |
-#include <utility> |
- |
-#include "android_webview/native/permission/aw_permission_request.h" |
-#include "android_webview/native/permission/aw_permission_request_delegate.h" |
-#include "android_webview/native/permission/permission_request_handler_client.h" |
-#include "base/android/scoped_java_ref.h" |
-#include "base/bind.h" |
-#include "content/public/browser/navigation_details.h" |
-#include "content/public/browser/navigation_entry.h" |
-#include "content/public/browser/web_contents.h" |
- |
-using base::android::ScopedJavaLocalRef; |
- |
-namespace android_webview { |
- |
-namespace { |
- |
-int GetLastCommittedEntryID(content::WebContents* web_contents) { |
- if (!web_contents) return 0; |
- |
- content::NavigationEntry* entry = |
- web_contents->GetController().GetLastCommittedEntry(); |
- return entry ? entry->GetUniqueID() : 0; |
-} |
- |
-} // namespace |
- |
-PermissionRequestHandler::PermissionRequestHandler( |
- PermissionRequestHandlerClient* client, |
- content::WebContents* web_contents) |
- : content::WebContentsObserver(web_contents), |
- client_(client), |
- contents_unique_id_(GetLastCommittedEntryID(web_contents)) { |
-} |
- |
-PermissionRequestHandler::~PermissionRequestHandler() { |
- CancelAllRequests(); |
-} |
- |
-void PermissionRequestHandler::SendRequest( |
- std::unique_ptr<AwPermissionRequestDelegate> request) { |
- if (Preauthorized(request->GetOrigin(), request->GetResources())) { |
- request->NotifyRequestResult(true); |
- return; |
- } |
- |
- base::WeakPtr<AwPermissionRequest> weak_request; |
- base::android::ScopedJavaLocalRef<jobject> java_peer = |
- AwPermissionRequest::Create(std::move(request), &weak_request); |
- requests_.push_back(weak_request); |
- client_->OnPermissionRequest(java_peer, weak_request.get()); |
- PruneRequests(); |
-} |
- |
-void PermissionRequestHandler::CancelRequest(const GURL& origin, |
- int64_t resources) { |
- // The request list might have multiple requests with same origin and |
- // resources. |
- RequestIterator i = FindRequest(origin, resources); |
- while (i != requests_.end()) { |
- CancelRequestInternal(i); |
- requests_.erase(i); |
- i = FindRequest(origin, resources); |
- } |
-} |
- |
-void PermissionRequestHandler::PreauthorizePermission(const GURL& origin, |
- int64_t resources) { |
- if (!resources) |
- return; |
- |
- std::string key = origin.GetOrigin().spec(); |
- if (key.empty()) { |
- LOG(ERROR) << "The origin of preauthorization is empty, ignore it."; |
- return; |
- } |
- |
- preauthorized_permission_[key] |= resources; |
-} |
- |
-void PermissionRequestHandler::NavigationEntryCommitted( |
- const content::LoadCommittedDetails& details) { |
- const ui::PageTransition transition = details.entry->GetTransitionType(); |
- if (details.is_navigation_to_different_page() || |
- ui::PageTransitionCoreTypeIs(transition, ui::PAGE_TRANSITION_RELOAD) || |
- contents_unique_id_ != details.entry->GetUniqueID()) { |
- CancelAllRequests(); |
- contents_unique_id_ = details.entry->GetUniqueID(); |
- } |
-} |
- |
-PermissionRequestHandler::RequestIterator PermissionRequestHandler::FindRequest( |
- const GURL& origin, |
- int64_t resources) { |
- RequestIterator i; |
- for (i = requests_.begin(); i != requests_.end(); ++i) { |
- if (i->get() && i->get()->GetOrigin() == origin && |
- i->get()->GetResources() == resources) { |
- break; |
- } |
- } |
- return i; |
-} |
- |
-void PermissionRequestHandler::CancelRequestInternal(RequestIterator i) { |
- AwPermissionRequest* request = i->get(); |
- if (request) { |
- client_->OnPermissionRequestCanceled(request); |
- request->CancelAndDelete(); |
- } |
-} |
- |
-void PermissionRequestHandler::CancelAllRequests() { |
- for (RequestIterator i = requests_.begin(); i != requests_.end(); ++i) |
- CancelRequestInternal(i); |
-} |
- |
-void PermissionRequestHandler::PruneRequests() { |
- for (RequestIterator i = requests_.begin(); i != requests_.end();) { |
- if (!i->get()) |
- i = requests_.erase(i); |
- else |
- ++i; |
- } |
-} |
- |
-bool PermissionRequestHandler::Preauthorized(const GURL& origin, |
- int64_t resources) { |
- std::map<std::string, int64_t>::iterator i = |
- preauthorized_permission_.find(origin.GetOrigin().spec()); |
- |
- return i != preauthorized_permission_.end() && |
- (resources & i->second) == resources; |
-} |
- |
-} // namespace android_webivew |