Chromium Code Reviews| Index: chrome/browser/guest_view/web_view/web_view_guest.cc |
| diff --git a/chrome/browser/guest_view/web_view/web_view_guest.cc b/chrome/browser/guest_view/web_view/web_view_guest.cc |
| index 465495e7a3c9cfd107f733072dbdaa9218b49dcd..5980b36d106906acb1905bb485946f862d7461bf 100644 |
| --- a/chrome/browser/guest_view/web_view/web_view_guest.cc |
| +++ b/chrome/browser/guest_view/web_view/web_view_guest.cc |
| @@ -310,6 +310,12 @@ scoped_ptr<base::ListValue> WebViewGuest::MenuModelToValue( |
| void WebViewGuest::Attach(WebContents* embedder_web_contents, |
| const base::DictionaryValue& args) { |
| + std::string name; |
| + args.GetString(webview::kName, &name); |
| + if (name_.empty()) |
|
lazyboy
2014/05/21 16:27:05
I think we had a note/comment here about which nam
Fady Samuel
2014/05/21 16:56:49
Done.
|
| + name_ = name; |
| + ReportFrameNameChange(name_); |
| + |
| std::string user_agent_override; |
| if (args.GetString(webview::kParameterUserAgentOverride, |
| &user_agent_override)) { |
| @@ -865,6 +871,18 @@ void WebViewGuest::UserAgentOverrideSet(const std::string& user_agent) { |
| guest_web_contents()->GetController().Reload(false); |
| } |
| +void WebViewGuest::RenderViewReady() { |
| + guest_web_contents()->SetMainFrameName(name_); |
| +} |
| + |
| +void WebViewGuest::ReportFrameNameChange(const std::string& name) { |
| + name_ = name; |
| + scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
| + args->SetString(webview::kName, name); |
| + DispatchEvent( |
| + new GuestViewBase::Event(webview::kEventFrameNameChanged, args.Pass())); |
| +} |
| + |
| void WebViewGuest::LoadHandlerCalled() { |
| scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
| DispatchEvent( |
| @@ -1205,6 +1223,13 @@ void WebViewGuest::ShowContextMenu(int request_id, |
| menu_delegate->ShowMenu(pending_menu_.Pass()); |
| } |
| +void WebViewGuest::SetName(const std::string& name) { |
| + if (name_ == name) |
| + return; |
| + name_ = name; |
| + guest_web_contents()->SetMainFrameName(name); |
| +} |
| + |
| void WebViewGuest::Destroy() { |
| if (!attached() && GetOpener()) |
| GetOpener()->pending_new_windows_.erase(this); |
| @@ -1263,10 +1288,23 @@ void WebViewGuest::WebContentsCreated(WebContents* source_contents, |
| CHECK(guest); |
| guest->SetOpener(this); |
| std::string guest_name = base::UTF16ToUTF8(frame_name); |
| + guest->name_ = guest_name; |
| pending_new_windows_.insert( |
| std::make_pair(guest, NewWindowInfo(target_url, guest_name))); |
| } |
| +void WebViewGuest::FrameNameChanged(int render_frame_id, |
| + bool is_top_level, |
| + const std::string& name) { |
| + if (!is_top_level) |
| + return; |
| + |
| + if (name_ == name) |
| + return; |
| + |
| + ReportFrameNameChange(name); |
| +} |
| + |
| void WebViewGuest::LoadURLWithParams(const GURL& url, |
| const content::Referrer& referrer, |
| content::PageTransition transition_type, |