Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(128)

Side by Side Diff: chrome/browser/guest_view/web_view/web_view_guest.cc

Issue 338353007: Implementation of shared worker code path for WebView file system permission. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master_sharedworker
Patch Set: Use scoped_refptr. Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/guest_view/web_view/web_view_guest.h" 5 #include "chrome/browser/guest_view/web_view/web_view_guest.h"
6 6
7 #include "base/message_loop/message_loop.h" 7 #include "base/message_loop/message_loop.h"
8 #include "base/strings/stringprintf.h" 8 #include "base/strings/stringprintf.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "chrome/browser/chrome_notification_types.h" 10 #include "chrome/browser/chrome_notification_types.h"
(...skipping 913 matching lines...) Expand 10 before | Expand all | Expand 10 after
924 content::StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL, 924 content::StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL,
925 GURL(), 925 GURL(),
926 content::StoragePartition::OriginMatcherFunction(), 926 content::StoragePartition::OriginMatcherFunction(),
927 remove_since, 927 remove_since,
928 base::Time::Now(), 928 base::Time::Now(),
929 callback); 929 callback);
930 return true; 930 return true;
931 } 931 }
932 932
933 // static 933 // static
934 void WebViewGuest::FileSystemAccessedAsync(int render_process_id, 934 void WebViewGuest::FileSystemAccessed(int render_process_id,
935 int render_frame_id, 935 int render_frame_id,
936 int request_id, 936 const GURL& url,
937 const GURL& url, 937 bool blocked_by_policy,
938 bool blocked_by_policy) { 938 base::Callback<void(bool)> callback) {
939 WebViewGuest* guest = 939 WebViewGuest* guest =
940 WebViewGuest::FromFrameID(render_process_id, render_frame_id); 940 WebViewGuest::FromFrameID(render_process_id, render_frame_id);
941 DCHECK(guest); 941 DCHECK(guest);
942 guest->RequestFileSystemPermission( 942 guest->RequestFileSystemPermission(
943 url, 943 url,
944 !blocked_by_policy, 944 !blocked_by_policy,
945 base::Bind(&WebViewGuest::FileSystemAccessedAsyncResponse, 945 base::Bind(&WebViewGuest::FileSystemAccessedResponse,
946 render_process_id, 946 render_process_id,
947 render_frame_id, 947 render_frame_id,
948 request_id, 948 url,
949 url)); 949 callback));
950 } 950 }
951 951
952 // static 952 // static
953 void WebViewGuest::FileSystemAccessedAsyncResponse(int render_process_id, 953 void WebViewGuest::FileSystemAccessedResponse(
954 int render_frame_id, 954 int render_process_id,
955 int request_id, 955 int render_frame_id,
956 const GURL& url, 956 const GURL& url,
957 bool allowed) { 957 base::Callback<void(bool)> callback,
958 bool allowed) {
958 TabSpecificContentSettings::FileSystemAccessed( 959 TabSpecificContentSettings::FileSystemAccessed(
959 render_process_id, render_frame_id, url, !allowed); 960 render_process_id, render_frame_id, url, !allowed);
960 content::RenderFrameHost* render_frame_host = 961 callback.Run(allowed);
961 content::RenderFrameHost::FromID(render_process_id, render_frame_id);
962 if (!render_frame_host)
963 return;
964 render_frame_host->Send(
965 new ChromeViewMsg_RequestFileSystemAccessAsyncResponse(
966 render_frame_id, request_id, allowed));
967 }
968
969 // static
970 void WebViewGuest::FileSystemAccessedSync(int render_process_id,
971 int render_frame_id,
972 const GURL& url,
973 bool blocked_by_policy,
974 IPC::Message* reply_msg) {
975 WebViewGuest* guest =
976 WebViewGuest::FromFrameID(render_process_id, render_frame_id);
977 DCHECK(guest);
978 guest->RequestFileSystemPermission(
979 url,
980 !blocked_by_policy,
981 base::Bind(&WebViewGuest::FileSystemAccessedSyncResponse,
982 render_process_id,
983 render_frame_id,
984 url,
985 reply_msg));
986 }
987
988 // static
989 void WebViewGuest::FileSystemAccessedSyncResponse(int render_process_id,
990 int render_frame_id,
991 const GURL& url,
992 IPC::Message* reply_msg,
993 bool allowed) {
994 TabSpecificContentSettings::FileSystemAccessed(
995 render_process_id, render_frame_id, url, !allowed);
996 ChromeViewHostMsg_RequestFileSystemAccessSync::WriteReplyParams(reply_msg,
997 allowed);
998 content::RenderFrameHost* render_frame_host =
999 content::RenderFrameHost::FromID(render_process_id, render_frame_id);
1000 if (!render_frame_id)
1001 return;
1002 render_frame_host->Send(reply_msg);
1003 } 962 }
1004 963
1005 WebViewGuest::~WebViewGuest() { 964 WebViewGuest::~WebViewGuest() {
1006 } 965 }
1007 966
1008 void WebViewGuest::DidCommitProvisionalLoadForFrame( 967 void WebViewGuest::DidCommitProvisionalLoadForFrame(
1009 int64 frame_id, 968 int64 frame_id,
1010 const base::string16& frame_unique_name, 969 const base::string16& frame_unique_name,
1011 bool is_main_frame, 970 bool is_main_frame,
1012 const GURL& url, 971 const GURL& url,
(...skipping 637 matching lines...) Expand 10 before | Expand all | Expand 10 after
1650 bool allow, 1609 bool allow,
1651 const std::string& user_input) { 1610 const std::string& user_input) {
1652 WebViewGuest* guest = 1611 WebViewGuest* guest =
1653 WebViewGuest::From(embedder_render_process_id(), new_window_instance_id); 1612 WebViewGuest::From(embedder_render_process_id(), new_window_instance_id);
1654 if (!guest) 1613 if (!guest)
1655 return; 1614 return;
1656 1615
1657 if (!allow) 1616 if (!allow)
1658 guest->Destroy(); 1617 guest->Destroy();
1659 } 1618 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698