summaryrefslogtreecommitdiffstats
path: root/apps/custom_launcher_page_contents.cc
diff options
context:
space:
mode:
authormgiuca@chromium.org <mgiuca@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-04 13:52:06 +0000
committermgiuca@chromium.org <mgiuca@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-04 13:52:06 +0000
commit9649837d7d1d2a597332f77fc850ca8693ca5e26 (patch)
treeebead4ca1dcd7d12e4f3fa6662fa7ea3184b7546 /apps/custom_launcher_page_contents.cc
parentcaa1bd8558e0615b588a69ae1fa1cb6a33838c62 (diff)
downloadchromium_src-9649837d7d1d2a597332f77fc850ca8693ca5e26.zip
chromium_src-9649837d7d1d2a597332f77fc850ca8693ca5e26.tar.gz
chromium_src-9649837d7d1d2a597332f77fc850ca8693ca5e26.tar.bz2
Experimental app list: custom launcher pages handle web contents events.
CustomLauncherPageContents now implements WebContentsDelegate. Now web features that rely on the browser, such as clicking links and opening file choosers, are handled rather than being ignored. BUG=391137 Review URL: https://codereview.chromium.org/404383002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@287331 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'apps/custom_launcher_page_contents.cc')
-rw-r--r--apps/custom_launcher_page_contents.cc78
1 files changed, 76 insertions, 2 deletions
diff --git a/apps/custom_launcher_page_contents.cc b/apps/custom_launcher_page_contents.cc
index fbcfe33..2af3d3a 100644
--- a/apps/custom_launcher_page_contents.cc
+++ b/apps/custom_launcher_page_contents.cc
@@ -6,9 +6,10 @@
#include <string>
+#include "apps/app_delegate.h"
+#include "apps/app_web_contents_helper.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/extensions/chrome_extension_web_contents_observer.h"
-#include "content/public/browser/browser_context.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/site_instance.h"
#include "content/public/browser/web_contents.h"
@@ -17,7 +18,10 @@
namespace apps {
-CustomLauncherPageContents::CustomLauncherPageContents() {
+CustomLauncherPageContents::CustomLauncherPageContents(
+ scoped_ptr<AppDelegate> app_delegate,
+ const std::string& extension_id)
+ : app_delegate_(app_delegate.Pass()), extension_id_(extension_id) {
}
CustomLauncherPageContents::~CustomLauncherPageContents() {
@@ -37,6 +41,10 @@ void CustomLauncherPageContents::Initialize(content::BrowserContext* context,
->browser_handles_all_top_level_requests = true;
web_contents_->GetRenderViewHost()->SyncRendererPrefs();
+ helper_.reset(new AppWebContentsHelper(
+ context, extension_id_, web_contents_.get(), app_delegate_.get()));
+ web_contents_->SetDelegate(this);
+
// This observer will activate the extension when it is navigated to, which
// allows Dispatcher to give it the proper context and makes it behave like an
// extension.
@@ -49,6 +57,72 @@ void CustomLauncherPageContents::Initialize(content::BrowserContext* context,
std::string());
}
+content::WebContents* CustomLauncherPageContents::OpenURLFromTab(
+ content::WebContents* source,
+ const content::OpenURLParams& params) {
+ DCHECK_EQ(web_contents_.get(), source);
+ return helper_->OpenURLFromTab(params);
+}
+
+void CustomLauncherPageContents::AddNewContents(
+ content::WebContents* source,
+ content::WebContents* new_contents,
+ WindowOpenDisposition disposition,
+ const gfx::Rect& initial_pos,
+ bool user_gesture,
+ bool* was_blocked) {
+ app_delegate_->AddNewContents(new_contents->GetBrowserContext(),
+ new_contents,
+ disposition,
+ initial_pos,
+ user_gesture,
+ was_blocked);
+}
+
+bool CustomLauncherPageContents::IsPopupOrPanel(
+ const content::WebContents* source) const {
+ return true;
+}
+
+bool CustomLauncherPageContents::ShouldSuppressDialogs() {
+ return true;
+}
+
+bool CustomLauncherPageContents::PreHandleGestureEvent(
+ content::WebContents* source,
+ const blink::WebGestureEvent& event) {
+ return AppWebContentsHelper::ShouldSuppressGestureEvent(event);
+}
+
+content::ColorChooser* CustomLauncherPageContents::OpenColorChooser(
+ content::WebContents* web_contents,
+ SkColor initial_color,
+ const std::vector<content::ColorSuggestion>& suggestionss) {
+ return app_delegate_->ShowColorChooser(web_contents, initial_color);
+}
+
+void CustomLauncherPageContents::RunFileChooser(
+ content::WebContents* tab,
+ const content::FileChooserParams& params) {
+ app_delegate_->RunFileChooser(tab, params);
+}
+
+void CustomLauncherPageContents::RequestToLockMouse(
+ content::WebContents* web_contents,
+ bool user_gesture,
+ bool last_unlocked_by_target) {
+ DCHECK_EQ(web_contents_.get(), web_contents);
+ helper_->RequestToLockMouse();
+}
+
+void CustomLauncherPageContents::RequestMediaAccessPermission(
+ content::WebContents* web_contents,
+ const content::MediaStreamRequest& request,
+ const content::MediaResponseCallback& callback) {
+ DCHECK_EQ(web_contents_.get(), web_contents);
+ helper_->RequestMediaAccessPermission(request, callback);
+}
+
bool CustomLauncherPageContents::OnMessageReceived(
const IPC::Message& message) {
bool handled = true;