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

Unified Diff: chrome/browser/webview/webview_guest.cc

Issue 17165004: <webview>: Partially migrate loadcommit event from content to chrome (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merge with ToT Created 7 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/webview/webview_guest.cc
diff --git a/chrome/browser/webview/webview_guest.cc b/chrome/browser/webview/webview_guest.cc
index 5d97f2af8c0edb0374b628d831549c7f67f31bb6..fd53c45c5754b5711398a746d29092f2f9e3a0ed 100644
--- a/chrome/browser/webview/webview_guest.cc
+++ b/chrome/browser/webview/webview_guest.cc
@@ -6,7 +6,9 @@
#include "base/lazy_instance.h"
#include "chrome/browser/extensions/api/web_request/web_request_api.h"
+#include "chrome/browser/extensions/event_router.h"
#include "chrome/browser/extensions/extension_renderer_state.h"
+#include "chrome/browser/extensions/extension_system.h"
#include "chrome/browser/extensions/script_executor.h"
#include "chrome/browser/webview/webview_constants.h"
#include "content/public/browser/browser_thread.h"
@@ -76,6 +78,35 @@ WebViewGuest::~WebViewGuest() {
webview_guest_map.Get().erase(key);
}
+void WebViewGuest::DispatchEvent(const std::string& event_name,
+ scoped_ptr<DictionaryValue> event) {
+ Profile* profile = Profile::FromBrowserContext(
+ web_contents()->GetBrowserContext());
+
+ extensions::EventFilteringInfo info;
+ info.SetURL(GURL());
+ info.SetInstanceID(guest_instance_id_);
+ scoped_ptr<ListValue> args(new ListValue());
+ args->Append(event.release());
+
+ extensions::EventRouter::DispatchEvent(
+ embedder_web_contents_, profile, extension_id_,
+ event_name, args.Pass(),
+ extensions::EventRouter::USER_GESTURE_UNKNOWN, info);
+}
+
+void WebViewGuest::DidCommitProvisionalLoadForFrame(
+ int64 frame_id,
+ bool is_main_frame,
+ const GURL& url,
+ content::PageTransition transition_type,
+ content::RenderViewHost* render_view_host) {
+ scoped_ptr<DictionaryValue> event(new DictionaryValue());
+ event->SetString(keys::kUrl, url.spec());
+ event->SetBoolean(keys::kIsTopLevel, is_main_frame);
+ DispatchEvent(keys::kEventLoadCommit, event.Pass());
+}
+
void WebViewGuest::WebContentsDestroyed(WebContents* web_contents) {
RemoveWebViewFromExtensionRendererState(web_contents);
content::BrowserThread::PostTask(

Powered by Google App Engine
This is Rietveld 408576698