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

Unified Diff: components/offline_pages/content/background_loader/background_loader_contents.cc

Issue 2481443002: Implementation (cc file) for background loader contents. (Closed)
Patch Set: rebase Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: components/offline_pages/content/background_loader/background_loader_contents.cc
diff --git a/components/offline_pages/content/background_loader/background_loader_contents.cc b/components/offline_pages/content/background_loader/background_loader_contents.cc
new file mode 100644
index 0000000000000000000000000000000000000000..f330abf73ee607690cd0caaa2d0f06ccaa239b01
--- /dev/null
+++ b/components/offline_pages/content/background_loader/background_loader_contents.cc
@@ -0,0 +1,120 @@
+// Copyright (c) 2016 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 "components/offline_pages/content/background_loader/background_loader_contents.h"
+
+#include "content/public/browser/web_contents.h"
+
+namespace background_loader {
+
+BackgroundLoaderContents::BackgroundLoaderContents(
+ content::BrowserContext* browser_context)
+ : browser_context_(browser_context) {
+ web_contents_.reset(content::WebContents::Create(
+ content::WebContents::CreateParams(browser_context_)));
+ web_contents_->SetDelegate(this);
+}
+
+BackgroundLoaderContents::~BackgroundLoaderContents() {}
+
+void BackgroundLoaderContents::LoadPage(const GURL& url) {
+ web_contents_->GetController().LoadURL(
+ url /* url to be loaded */,
+ content::Referrer() /* Default referrer policy, no referring url */,
+ ui::PAGE_TRANSITION_LINK /* page transition type: clicked on link */,
+ std::string() /* extra headers */);
+}
+
+void BackgroundLoaderContents::Cancel() {
+ web_contents_->Close();
+}
+
+bool BackgroundLoaderContents::IsNeverVisible(
+ content::WebContents* web_contents) {
+ // Background, so not visible.
+ return true;
+}
+
+void BackgroundLoaderContents::CloseContents(content::WebContents* source) {
+ // Do nothing. Other pages should not be able to close a background page.
+ NOTREACHED();
+}
+
+bool BackgroundLoaderContents::ShouldSuppressDialogs(
+ content::WebContents* source) {
+ // Dialog prompts are not actionable in the background.
+ return true;
+}
+
+bool BackgroundLoaderContents::ShouldFocusPageAfterCrash() {
+ // Background page should never be focused.
+ return false;
+}
+
+void BackgroundLoaderContents::CanDownload(
+ const GURL& url,
+ const std::string& request_method,
+ const base::Callback<void(bool)>& callback) {
+ // Do not download anything.
+ callback.Run(false);
+}
+
+bool BackgroundLoaderContents::ShouldCreateWebContents(
+ content::WebContents* contents,
+ int32_t route_id,
+ int32_t main_frame_route_id,
+ int32_t main_frame_widget_route_id,
+ WindowContainerType window_container_type,
+ const std::string& frame_name,
+ const GURL& target_url,
+ const std::string& partition_id,
+ content::SessionStorageNamespace* session_storage_namespace) {
+ // Background pages should not create other webcontents/tabs.
+ return false;
+}
+
+void BackgroundLoaderContents::AddNewContents(
+ content::WebContents* source,
+ content::WebContents* new_contents,
+ WindowOpenDisposition disposition,
+ const gfx::Rect& initial_rect,
+ bool user_gesture,
+ bool* was_blocked) {
+ // Pop-ups should be blocked;
+ // background pages should not create other contents
+ if (was_blocked != nullptr)
+ *was_blocked = true;
+}
+
+#if defined(OS_ANDROID)
+bool BackgroundLoaderContents::ShouldBlockMediaRequest(const GURL& url) {
+ // Background pages should not have access to media.
+ return true;
+}
+#endif
+
+void BackgroundLoaderContents::RequestMediaAccessPermission(
+ content::WebContents* contents,
+ const content::MediaStreamRequest& request,
+ const content::MediaResponseCallback& callback) {
+ // No permissions granted, act as if dismissed.
+ callback.Run(
+ content::MediaStreamDevices(),
+ content::MediaStreamRequestResult::MEDIA_DEVICE_PERMISSION_DISMISSED,
+ std::unique_ptr<content::MediaStreamUI>());
+}
+
+bool BackgroundLoaderContents::CheckMediaAccessPermission(
+ content::WebContents* contents,
+ const GURL& security_origin,
+ content::MediaStreamType type) {
+ return false; // No permissions granted.
+}
+
+BackgroundLoaderContents::BackgroundLoaderContents()
+ : browser_context_(nullptr) {
+ web_contents_.reset();
+}
+
+} // namespace background_loader

Powered by Google App Engine
This is Rietveld 408576698