Chromium Code Reviews| Index: chrome/browser/webview/webview_guest.cc |
| diff --git a/chrome/browser/webview/webview_guest.cc b/chrome/browser/webview/webview_guest.cc |
| index 958b0e2930d772131d8fc271dba098b0e14acb7a..3f7a5eafae4e85c0504e005f0faf90a4eb82ab82 100644 |
| --- a/chrome/browser/webview/webview_guest.cc |
| +++ b/chrome/browser/webview/webview_guest.cc |
| @@ -5,8 +5,12 @@ |
| #include "chrome/browser/webview/webview_guest.h" |
| #include "base/lazy_instance.h" |
| +#include "base/strings/stringprintf.h" |
|
lazyboy
2013/06/20 02:37:05
Not required anymore?
Fady Samuel
2013/06/20 03:58:29
Done.
|
| #include "chrome/browser/extensions/api/web_request/web_request_api.h" |
| +#include "chrome/browser/extensions/api/webview/webview_api_constants.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 "content/public/browser/browser_thread.h" |
| #include "content/public/browser/render_process_host.h" |
| @@ -15,6 +19,8 @@ |
| using content::WebContents; |
| +namespace keys = webview_api_constants; |
| + |
| namespace chrome { |
| namespace { |
| @@ -69,6 +75,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( |