diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-12 14:27:29 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-13 09:35:20 +0000 |
commit | c30a6232df03e1efbd9f3b226777b07e087a1122 (patch) | |
tree | e992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/extensions/browser/guest_view | |
parent | 7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff) | |
download | qtwebengine-chromium-85-based.tar.gz |
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/extensions/browser/guest_view')
12 files changed, 66 insertions, 72 deletions
diff --git a/chromium/extensions/browser/guest_view/extensions_guest_view_message_filter.cc b/chromium/extensions/browser/guest_view/extensions_guest_view_message_filter.cc index e5045479ec4..7c442c9b471 100644 --- a/chromium/extensions/browser/guest_view/extensions_guest_view_message_filter.cc +++ b/chromium/extensions/browser/guest_view/extensions_guest_view_message_filter.cc @@ -9,7 +9,6 @@ #include "base/bind.h" #include "base/guid.h" #include "base/stl_util.h" -#include "base/task/post_task.h" #include "base/time/time.h" #include "components/guest_view/browser/bad_message.h" #include "components/guest_view/browser/guest_view_manager.h" @@ -119,8 +118,8 @@ void ExtensionsGuestViewMessageFilter::CreateMimeHandlerViewGuest( const gfx::Size& element_size, mojo::PendingRemote<mime_handler::BeforeUnloadControl> before_unload_control) { - base::PostTask( - FROM_HERE, {content::BrowserThread::UI}, + content::GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(&ExtensionsGuestViewMessageFilter:: CreateMimeHandlerViewGuestOnUIThread, this, render_frame_id, view_id, element_instance_id, @@ -131,8 +130,8 @@ void ExtensionsGuestViewMessageFilter::ReadyToCreateMimeHandlerView( int32_t render_frame_id, bool success) { if (!content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)) { - base::PostTask( - FROM_HERE, {content::BrowserThread::UI}, + content::GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce( &ExtensionsGuestViewMessageFilter::ReadyToCreateMimeHandlerView, this, render_frame_id, success)); @@ -205,8 +204,8 @@ void ExtensionsGuestViewMessageFilter::CreateEmbeddedMimeHandlerViewGuest( const gfx::Size& element_size, content::mojom::TransferrableURLLoaderPtr transferrable_url_loader) { if (!content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)) { - base::PostTask(FROM_HERE, {content::BrowserThread::UI}, - base::BindOnce(&ExtensionsGuestViewMessageFilter:: + content::GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(&ExtensionsGuestViewMessageFilter:: CreateEmbeddedMimeHandlerViewGuest, this, render_frame_id, tab_id, original_url, element_instance_id, element_size, diff --git a/chromium/extensions/browser/guest_view/mime_handler_view/mime_handler_view_attach_helper.cc b/chromium/extensions/browser/guest_view/mime_handler_view/mime_handler_view_attach_helper.cc index eb79c6efff9..2c03600704c 100644 --- a/chromium/extensions/browser/guest_view/mime_handler_view/mime_handler_view_attach_helper.cc +++ b/chromium/extensions/browser/guest_view/mime_handler_view/mime_handler_view_attach_helper.cc @@ -8,7 +8,6 @@ #include "base/containers/flat_map.h" #include "base/memory/ptr_util.h" #include "base/no_destructor.h" -#include "base/task/post_task.h" #include "base/unguessable_token.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" @@ -101,8 +100,8 @@ bool MimeHandlerViewAttachHelper::OverrideBodyForInterceptedResponse( SkColorGetB(color), token.c_str(), mime_type.c_str(), token.c_str()); payload->assign(html_str); *data_pipe_size = kFullPageMimeHandlerViewDataPipeSize; - base::PostTaskAndReply( - FROM_HERE, {BrowserThread::UI}, + content::GetUIThreadTaskRunner({})->PostTaskAndReply( + FROM_HERE, base::BindOnce(CreateFullPageMimeHandlerView, navigating_frame_tree_node_id, resource_url, mime_type, stream_id, token), diff --git a/chromium/extensions/browser/guest_view/mime_handler_view/mime_handler_view_browsertest.cc b/chromium/extensions/browser/guest_view/mime_handler_view/mime_handler_view_browsertest.cc index 901ba976b29..0f077fe076e 100644 --- a/chromium/extensions/browser/guest_view/mime_handler_view/mime_handler_view_browsertest.cc +++ b/chromium/extensions/browser/guest_view/mime_handler_view/mime_handler_view_browsertest.cc @@ -21,6 +21,7 @@ #include "components/guest_view/browser/test_guest_view_manager.h" #include "components/javascript_dialogs/app_modal_dialog_controller.h" #include "components/javascript_dialogs/app_modal_dialog_view.h" +#include "components/printing/common/print.mojom.h" #include "components/printing/common/print_messages.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/navigation_handle.h" @@ -194,7 +195,7 @@ class PrintPreviewWaiter : public content::BrowserMessageFilter { return false; } - void OnDidStartPreview(const PrintHostMsg_DidStartPreview_Params& params, + void OnDidStartPreview(const printing::mojom::DidStartPreviewParams& params, const PrintHostMsg_PreviewIds& ids) { // Expect that there is at least one page. did_load_ = true; diff --git a/chromium/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc b/chromium/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc index e1789871c94..390b07fc577 100644 --- a/chromium/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc +++ b/chromium/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc @@ -354,22 +354,19 @@ void MimeHandlerViewGuest::OnRenderFrameHostDeleted(int process_id, } void MimeHandlerViewGuest::EnterFullscreenModeForTab( - content::WebContents*, - const GURL& origin, + content::RenderFrameHost* requesting_frame, const blink::mojom::FullscreenOptions& options) { if (SetFullscreenState(true)) { - auto* delegate = embedder_web_contents()->GetDelegate(); - if (delegate) { - delegate->EnterFullscreenModeForTab(embedder_web_contents(), origin, - options); + if (auto* delegate = embedder_web_contents()->GetDelegate()) { + delegate->EnterFullscreenModeForTab( + embedder_web_contents()->GetMainFrame(), options); } } } void MimeHandlerViewGuest::ExitFullscreenModeForTab(content::WebContents*) { if (SetFullscreenState(false)) { - auto* delegate = embedder_web_contents()->GetDelegate(); - if (delegate) + if (auto* delegate = embedder_web_contents()->GetDelegate()) delegate->ExitFullscreenModeForTab(embedder_web_contents()); } } diff --git a/chromium/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h b/chromium/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h index 242db17f8f3..56babf6fff5 100644 --- a/chromium/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h +++ b/chromium/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h @@ -147,8 +147,7 @@ class MimeHandlerViewGuest bool SaveFrame(const GURL& url, const content::Referrer& referrer) final; void OnRenderFrameHostDeleted(int process_id, int routing_id) final; void EnterFullscreenModeForTab( - content::WebContents* web_contents, - const GURL& origin, + content::RenderFrameHost* requesting_frame, const blink::mojom::FullscreenOptions& options) override; void ExitFullscreenModeForTab(content::WebContents*) override; bool IsFullscreenForTabOrPending( diff --git a/chromium/extensions/browser/guest_view/mime_handler_view/mime_handler_view_interactive_uitest.cc b/chromium/extensions/browser/guest_view/mime_handler_view/mime_handler_view_interactive_uitest.cc index a7ecd72b4a8..f6a8fa27565 100644 --- a/chromium/extensions/browser/guest_view/mime_handler_view/mime_handler_view_interactive_uitest.cc +++ b/chromium/extensions/browser/guest_view/mime_handler_view/mime_handler_view_interactive_uitest.cc @@ -14,7 +14,7 @@ #include "base/test/test_timeouts.h" #include "build/build_config.h" #include "chrome/browser/extensions/extension_apitest.h" -#include "chrome/browser/ui/exclusive_access/fullscreen_controller_test.h" +#include "chrome/browser/ui/exclusive_access/exclusive_access_test.h" #include "chrome/test/base/interactive_test_utils.h" #include "chrome/test/base/ui_test_utils.h" #include "components/guest_view/browser/test_guest_view_manager.h" diff --git a/chromium/extensions/browser/guest_view/mime_handler_view/test_mime_handler_view_guest.cc b/chromium/extensions/browser/guest_view/mime_handler_view/test_mime_handler_view_guest.cc index 1bff1925b5a..f67c024c166 100644 --- a/chromium/extensions/browser/guest_view/mime_handler_view/test_mime_handler_view_guest.cc +++ b/chromium/extensions/browser/guest_view/mime_handler_view/test_mime_handler_view_guest.cc @@ -5,7 +5,6 @@ #include "extensions/browser/guest_view/mime_handler_view/test_mime_handler_view_guest.h" #include "base/bind.h" -#include "base/task/post_task.h" #include "base/time/time.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" @@ -45,8 +44,8 @@ void TestMimeHandlerViewGuest::CreateWebContents( // Delay the creation of the guest's WebContents if |delay_| is set. if (delay_) { auto delta = base::TimeDelta::FromMilliseconds(delay_); - base::PostDelayedTask( - FROM_HERE, {content::BrowserThread::UI}, + content::GetUIThreadTaskRunner({})->PostDelayedTask( + FROM_HERE, base::BindOnce(&TestMimeHandlerViewGuest::CallBaseCreateWebContents, weak_ptr_factory_.GetWeakPtr(), create_params.CreateDeepCopy(), std::move(callback)), diff --git a/chromium/extensions/browser/guest_view/web_view/web_view_apitest.cc b/chromium/extensions/browser/guest_view/web_view/web_view_apitest.cc index 78968aca5bd..54b0a42f03a 100644 --- a/chromium/extensions/browser/guest_view/web_view/web_view_apitest.cc +++ b/chromium/extensions/browser/guest_view/web_view/web_view_apitest.cc @@ -483,7 +483,7 @@ IN_PROC_BROWSER_TEST_F(WebViewAPITest, TestContextMenu) { gfx::Point guest_context_menu_position(5, 5); gfx::Point root_context_menu_position = guest_view->TransformPointToRootCoordSpace(guest_context_menu_position); - content::SimulateRoutedMouseClickAt( + content::SimulateMouseClickAt( root_web_contents, blink::WebInputEvent::kNoModifiers, blink::WebMouseEvent::Button::kRight, root_context_menu_position); context_menu_filter->Wait(); diff --git a/chromium/extensions/browser/guest_view/web_view/web_view_content_script_manager.cc b/chromium/extensions/browser/guest_view/web_view/web_view_content_script_manager.cc index 3844ae9b43c..20c5615c025 100644 --- a/chromium/extensions/browser/guest_view/web_view/web_view_content_script_manager.cc +++ b/chromium/extensions/browser/guest_view/web_view/web_view_content_script_manager.cc @@ -14,7 +14,7 @@ #include "content/public/browser/render_frame_host.h" #include "content/public/browser/render_process_host.h" #include "extensions/browser/declarative_user_script_manager.h" -#include "extensions/browser/declarative_user_script_master.h" +#include "extensions/browser/declarative_user_script_set.h" #include "extensions/browser/extension_system.h" #include "extensions/browser/guest_view/web_view/web_view_constants.h" #include "extensions/browser/guest_view/web_view/web_view_renderer_state.h" @@ -53,10 +53,10 @@ void WebViewContentScriptManager::AddContentScripts( std::unique_ptr<UserScriptList> scripts) { DCHECK_CURRENTLY_ON(BrowserThread::UI); - DeclarativeUserScriptMaster* master = + DeclarativeUserScriptSet* script_set = DeclarativeUserScriptManager::Get(browser_context_) - ->GetDeclarativeUserScriptMasterByID(host_id); - DCHECK(master); + ->GetDeclarativeUserScriptSetByID(host_id); + DCHECK(script_set); // We need to update WebViewRenderState. std::set<int> ids_to_add; @@ -90,18 +90,18 @@ void WebViewContentScriptManager::AddContentScripts( } if (!to_delete.empty()) - master->RemoveScripts(to_delete); + script_set->RemoveScripts(to_delete); // Step 3: makes WebViewContentScriptManager become an observer of the // |loader| for scripts loaded event. - UserScriptLoader* loader = master->loader(); + UserScriptLoader* loader = script_set->loader(); DCHECK(loader); if (!user_script_loader_observer_.IsObserving(loader)) user_script_loader_observer_.Add(loader); - // Step 4: adds new scripts to the master. - master->AddScripts(std::move(scripts), embedder_process_id, - render_frame_host->GetRoutingID()); + // Step 4: adds new scripts to the set. + script_set->AddScripts(std::move(scripts), embedder_process_id, + render_frame_host->GetRoutingID()); // Step 5: creates an entry in |webview_host_id_map_| for the given // |embedder_process_id| and |view_instance_id| if it doesn't exist. @@ -146,16 +146,16 @@ void WebViewContentScriptManager::RemoveContentScripts( if (script_map_iter == guest_content_script_map_.end()) return; - DeclarativeUserScriptMaster* master = + DeclarativeUserScriptSet* script_set = DeclarativeUserScriptManager::Get(browser_context_) - ->GetDeclarativeUserScriptMasterByID(host_id); - CHECK(master); + ->GetDeclarativeUserScriptSetByID(host_id); + CHECK(script_set); // We need to update WebViewRenderState. std::set<int> ids_to_delete; std::set<UserScriptIDPair> scripts_to_delete; - // Step 1: removes content scripts from |master| and updates + // Step 1: removes content scripts from |set| and updates // |guest_content_script_map_|. std::map<std::string, UserScriptIDPair>& map = script_map_iter->second; // If the |script_name_list| is empty, all the content scripts added by the @@ -182,13 +182,13 @@ void WebViewContentScriptManager::RemoveContentScripts( // Step 2: makes WebViewContentScriptManager become an observer of the // |loader| for scripts loaded event. - UserScriptLoader* loader = master->loader(); + UserScriptLoader* loader = script_set->loader(); DCHECK(loader); if (!user_script_loader_observer_.IsObserving(loader)) user_script_loader_observer_.Add(loader); - // Step 3: removes content scripts from master. - master->RemoveScripts(scripts_to_delete); + // Step 3: removes content scripts from set. + script_set->RemoveScripts(scripts_to_delete); // Step 4: updates WebViewRenderState. if (!ids_to_delete.empty()) { diff --git a/chromium/extensions/browser/guest_view/web_view/web_view_find_helper.cc b/chromium/extensions/browser/guest_view/web_view/web_view_find_helper.cc index defb854a1a7..95cb7df01c3 100644 --- a/chromium/extensions/browser/guest_view/web_view/web_view_find_helper.cc +++ b/chromium/extensions/browser/guest_view/web_view/web_view_find_helper.cc @@ -103,31 +103,29 @@ void WebViewFindHelper::Find( // No duplicate insertions. DCHECK(insert_result.second); - // Find options including the implicit |findNext| field. blink::mojom::FindOptionsPtr full_options = insert_result.first->second->options().Clone(); - // Set |findNext| implicitly. if (current_find_session_) { const base::string16& current_search_text = current_find_session_->search_text(); bool current_match_case = current_find_session_->options()->match_case; - full_options->find_next = !current_search_text.empty() && - current_search_text == search_text && - current_match_case == options->match_case; + full_options->new_session = current_search_text.empty() || + current_search_text != search_text || + current_match_case != options->match_case; } else { - full_options->find_next = false; + full_options->new_session = true; } // Link find requests that are a part of the same find session. - if (full_options->find_next && current_find_session_) { + if (!full_options->new_session && current_find_session_) { DCHECK(current_find_request_id_ != current_find_session_->request_id()); current_find_session_->AddFindNextRequest( insert_result.first->second->AsWeakPtr()); } // Update the current find session, if necessary. - if (!full_options->find_next) + if (full_options->new_session) current_find_session_ = insert_result.first->second; // Handle the empty |search_text| case internally. @@ -157,7 +155,7 @@ void WebViewFindHelper::FindReply(int request_id, WebViewFindHelper::FindInfo* find_info = find_iterator->second.get(); // Handle canceled find requests. - if (!find_info->options()->find_next && + if (find_info->options()->new_session && find_info_map_.begin()->first < request_id) { DCHECK_NE(current_find_session_->request_id(), find_info_map_.begin()->first); @@ -167,7 +165,7 @@ void WebViewFindHelper::FindReply(int request_id, } // Clears the results for |findupdate| for a new find session. - if (!find_info->replied() && !find_info->options()->find_next) + if (!find_info->replied() && find_info->options()->new_session) find_update_event_.reset(new FindUpdateEvent(find_info->search_text())); // Aggregate the find results. diff --git a/chromium/extensions/browser/guest_view/web_view/web_view_guest.cc b/chromium/extensions/browser/guest_view/web_view/web_view_guest.cc index cac525bd5da..ff08c4063be 100644 --- a/chromium/extensions/browser/guest_view/web_view/web_view_guest.cc +++ b/chromium/extensions/browser/guest_view/web_view/web_view_guest.cc @@ -37,6 +37,7 @@ #include "content/public/browser/render_widget_host_view.h" #include "content/public/browser/site_instance.h" #include "content/public/browser/storage_partition.h" +#include "content/public/browser/storage_partition_config.h" #include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents_delegate.h" #include "content/public/common/content_switches.h" @@ -264,9 +265,7 @@ GuestViewBase* WebViewGuest::Create(WebContents* owner_web_contents) { // static bool WebViewGuest::GetGuestPartitionConfigForSite( const GURL& site, - std::string* partition_domain, - std::string* partition_name, - bool* in_memory) { + content::StoragePartitionConfig* storage_partition_config) { if (!site.SchemeIs(content::kGuestScheme)) return false; @@ -274,19 +273,22 @@ bool WebViewGuest::GetGuestPartitionConfigForSite( // URL was created, so it needs to be decoded. Since it was created via // EscapeQueryParamValue(), it should have no path separators or control codes // when unescaped, but safest to check for that and fail if it does. + std::string partition_name; if (!net::UnescapeBinaryURLComponentSafe(site.query_piece(), true /* fail_on_path_separators */, - partition_name)) { + &partition_name)) { return false; } // Since guest URLs are only used for packaged apps, there must be an app // id in the URL. CHECK(site.has_host()); - *partition_domain = site.host(); // Since persistence is optional, the path must either be empty or the // literal string. - *in_memory = (site.path() != "/persist"); + bool in_memory = (site.path() != "/persist"); + + *storage_partition_config = content::StoragePartitionConfig::Create( + site.host(), partition_name, in_memory); return true; } @@ -1001,11 +1003,9 @@ void WebViewGuest::ReportFrameNameChange(const std::string& name) { void WebViewGuest::PushWebViewStateToIOThread() { const GURL& site_url = web_contents()->GetSiteInstance()->GetSiteURL(); - std::string partition_domain; - std::string partition_id; - bool in_memory; - if (!GetGuestPartitionConfigForSite( - site_url, &partition_domain, &partition_id, &in_memory)) { + content::StoragePartitionConfig storage_partition_config = + content::StoragePartitionConfig::CreateDefault(); + if (!GetGuestPartitionConfigForSite(site_url, &storage_partition_config)) { NOTREACHED(); return; } @@ -1014,7 +1014,7 @@ void WebViewGuest::PushWebViewStateToIOThread() { web_view_info.embedder_process_id = owner_web_contents()->GetMainFrame()->GetProcess()->GetID(); web_view_info.instance_id = view_instance_id(); - web_view_info.partition_id = partition_id; + web_view_info.partition_id = storage_partition_config.partition_name(); web_view_info.owner_host = owner_host(); web_view_info.rules_registry_id = rules_registry_id_; @@ -1407,11 +1407,11 @@ void WebViewGuest::WebContentsCreated(WebContents* source_contents, } void WebViewGuest::EnterFullscreenModeForTab( - WebContents* web_contents, - const GURL& origin, + content::RenderFrameHost* requesting_frame, const blink::mojom::FullscreenOptions& options) { // Ask the embedder for permission. base::DictionaryValue request_info; + const GURL& origin = requesting_frame->GetLastCommittedURL().GetOrigin(); request_info.SetString(webview::kOrigin, origin.spec()); web_view_permission_helper_->RequestPermission( WEB_VIEW_PERMISSION_TYPE_FULLSCREEN, request_info, diff --git a/chromium/extensions/browser/guest_view/web_view/web_view_guest.h b/chromium/extensions/browser/guest_view/web_view/web_view_guest.h index 27c3c4460bf..23a25d4034a 100644 --- a/chromium/extensions/browser/guest_view/web_view/web_view_guest.h +++ b/chromium/extensions/browser/guest_view/web_view/web_view_guest.h @@ -23,6 +23,10 @@ #include "extensions/browser/script_executor.h" #include "third_party/blink/public/mojom/frame/find_in_page.mojom.h" +namespace content { +class StoragePartitionConfig; +} // namespace content + namespace extensions { class WebViewInternalFindFunction; @@ -50,10 +54,9 @@ class WebViewGuest : public guest_view::GuestView<WebViewGuest> { // a specially formatted URL, based on the application it is hosted by and // the partition requested by it. The format for that URL is: // chrome-guest://partition_domain/persist?partition_name - static bool GetGuestPartitionConfigForSite(const GURL& site, - std::string* partition_domain, - std::string* partition_name, - bool* in_memory); + static bool GetGuestPartitionConfigForSite( + const GURL& site, + content::StoragePartitionConfig* storage_partition_config); // Opposite of GetGuestPartitionConfigForSite: Creates a specially formatted // URL used by the SiteInstance associated with the WebViewGuest. See @@ -252,8 +255,7 @@ class WebViewGuest : public guest_view::GuestView<WebViewGuest> { const GURL& target_url, content::WebContents* new_contents) final; void EnterFullscreenModeForTab( - content::WebContents* web_contents, - const GURL& origin, + content::RenderFrameHost* requesting_frame, const blink::mojom::FullscreenOptions& options) final; void ExitFullscreenModeForTab(content::WebContents* web_contents) final; bool IsFullscreenForTabOrPending( |