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

Side by Side Diff: chrome/browser/webview/webview_guest.cc

Issue 17447005: <webview>: Move back, forward, canGoBack, canGoForward, go from content to chrome (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@filter_listener
Patch Set: 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/webview/webview_guest.h ('k') | chrome/common/extensions/api/webview.json » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/webview/webview_guest.h" 5 #include "chrome/browser/webview/webview_guest.h"
6 6
7 #include "base/lazy_instance.h" 7 #include "base/lazy_instance.h"
8 #include "chrome/browser/extensions/api/web_request/web_request_api.h" 8 #include "chrome/browser/extensions/api/web_request/web_request_api.h"
9 #include "chrome/browser/extensions/event_router.h" 9 #include "chrome/browser/extensions/event_router.h"
10 #include "chrome/browser/extensions/extension_renderer_state.h" 10 #include "chrome/browser/extensions/extension_renderer_state.h"
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 59
60 // static 60 // static
61 WebViewGuest* WebViewGuest::From(int embedder_process_id, 61 WebViewGuest* WebViewGuest::From(int embedder_process_id,
62 int guest_instance_id) { 62 int guest_instance_id) {
63 WebViewGuestMap* guest_map = webview_guest_map.Pointer(); 63 WebViewGuestMap* guest_map = webview_guest_map.Pointer();
64 WebViewGuestMap::iterator it = guest_map->find( 64 WebViewGuestMap::iterator it = guest_map->find(
65 std::make_pair(embedder_process_id, guest_instance_id)); 65 std::make_pair(embedder_process_id, guest_instance_id));
66 return it == guest_map->end() ? NULL : it->second; 66 return it == guest_map->end() ? NULL : it->second;
67 } 67 }
68 68
69 void WebViewGuest::Go(int relative_index) {
70 web_contents()->GetController().GoToOffset(relative_index);
71 }
72
69 WebViewGuest::~WebViewGuest() { 73 WebViewGuest::~WebViewGuest() {
70 std::pair<int, int> key(embedder_render_process_id_, guest_instance_id_); 74 std::pair<int, int> key(embedder_render_process_id_, guest_instance_id_);
71 webview_guest_map.Get().erase(key); 75 webview_guest_map.Get().erase(key);
72 } 76 }
73 77
74 void WebViewGuest::DispatchEvent(const std::string& event_name, 78 void WebViewGuest::DispatchEvent(const std::string& event_name,
75 scoped_ptr<DictionaryValue> event) { 79 scoped_ptr<DictionaryValue> event) {
76 Profile* profile = Profile::FromBrowserContext( 80 Profile* profile = Profile::FromBrowserContext(
77 web_contents()->GetBrowserContext()); 81 web_contents()->GetBrowserContext());
78 82
(...skipping 11 matching lines...) Expand all
90 94
91 void WebViewGuest::DidCommitProvisionalLoadForFrame( 95 void WebViewGuest::DidCommitProvisionalLoadForFrame(
92 int64 frame_id, 96 int64 frame_id,
93 bool is_main_frame, 97 bool is_main_frame,
94 const GURL& url, 98 const GURL& url,
95 content::PageTransition transition_type, 99 content::PageTransition transition_type,
96 content::RenderViewHost* render_view_host) { 100 content::RenderViewHost* render_view_host) {
97 scoped_ptr<DictionaryValue> event(new DictionaryValue()); 101 scoped_ptr<DictionaryValue> event(new DictionaryValue());
98 event->SetString(webview::kUrl, url.spec()); 102 event->SetString(webview::kUrl, url.spec());
99 event->SetBoolean(webview::kIsTopLevel, is_main_frame); 103 event->SetBoolean(webview::kIsTopLevel, is_main_frame);
104 event->SetInteger(webview::kInternalCurrentEntryIndex,
105 web_contents()->GetController().GetCurrentEntryIndex());
106 event->SetInteger(webview::kInternalEntryCount,
107 web_contents()->GetController().GetEntryCount());
100 DispatchEvent(webview::kEventLoadCommit, event.Pass()); 108 DispatchEvent(webview::kEventLoadCommit, event.Pass());
101 } 109 }
102 110
103 void WebViewGuest::WebContentsDestroyed(WebContents* web_contents) { 111 void WebViewGuest::WebContentsDestroyed(WebContents* web_contents) {
104 RemoveWebViewFromExtensionRendererState(web_contents); 112 RemoveWebViewFromExtensionRendererState(web_contents);
105 content::BrowserThread::PostTask( 113 content::BrowserThread::PostTask(
106 content::BrowserThread::IO, 114 content::BrowserThread::IO,
107 FROM_HERE, 115 FROM_HERE,
108 base::Bind( 116 base::Bind(
109 &RemoveWebViewEventListenersOnIOThread, 117 &RemoveWebViewEventListenersOnIOThread,
(...skipping 25 matching lines...) Expand all
135 void WebViewGuest::RemoveWebViewFromExtensionRendererState( 143 void WebViewGuest::RemoveWebViewFromExtensionRendererState(
136 WebContents* web_contents) { 144 WebContents* web_contents) {
137 content::BrowserThread::PostTask( 145 content::BrowserThread::PostTask(
138 content::BrowserThread::IO, FROM_HERE, 146 content::BrowserThread::IO, FROM_HERE,
139 base::Bind( 147 base::Bind(
140 &ExtensionRendererState::RemoveWebView, 148 &ExtensionRendererState::RemoveWebView,
141 base::Unretained(ExtensionRendererState::GetInstance()), 149 base::Unretained(ExtensionRendererState::GetInstance()),
142 web_contents->GetRenderProcessHost()->GetID(), 150 web_contents->GetRenderProcessHost()->GetID(),
143 web_contents->GetRoutingID())); 151 web_contents->GetRoutingID()));
144 } 152 }
OLDNEW
« no previous file with comments | « chrome/browser/webview/webview_guest.h ('k') | chrome/common/extensions/api/webview.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698