OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "services/navigation/view_impl.h" | 5 #include "services/navigation/view_impl.h" |
6 | 6 |
7 #include "base/memory/ptr_util.h" | 7 #include "base/memory/ptr_util.h" |
8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
9 #include "content/public/browser/browser_context.h" | 9 #include "content/public/browser/browser_context.h" |
10 #include "content/public/browser/interstitial_page.h" | 10 #include "content/public/browser/interstitial_page.h" |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 entry_ptr->title = base::UTF16ToUTF8(entry.GetTitle()); | 54 entry_ptr->title = base::UTF16ToUTF8(entry.GetTitle()); |
55 entry_ptr->redirect_chain = entry.GetRedirectChain(); | 55 entry_ptr->redirect_chain = entry.GetRedirectChain(); |
56 return entry_ptr; | 56 return entry_ptr; |
57 } | 57 } |
58 | 58 |
59 } // namespace | 59 } // namespace |
60 | 60 |
61 ViewImpl::ViewImpl(std::unique_ptr<shell::Connector> connector, | 61 ViewImpl::ViewImpl(std::unique_ptr<shell::Connector> connector, |
62 const std::string& client_user_id, | 62 const std::string& client_user_id, |
63 mojom::ViewClientPtr client, | 63 mojom::ViewClientPtr client, |
64 mojom::ViewRequest request, | |
65 std::unique_ptr<shell::ServiceContextRef> ref) | 64 std::unique_ptr<shell::ServiceContextRef> ref) |
66 : connector_(std::move(connector)), | 65 : connector_(std::move(connector)), |
67 binding_(this, std::move(request)), | |
68 client_(std::move(client)), | 66 client_(std::move(client)), |
69 ref_(std::move(ref)), | 67 ref_(std::move(ref)), |
70 web_view_(new views::WebView( | 68 web_view_(new views::WebView( |
71 content::BrowserContext::GetBrowserContextForShellUserId( | 69 content::BrowserContext::GetBrowserContextForShellUserId( |
72 client_user_id))) { | 70 client_user_id))) { |
73 web_view_->GetWebContents()->SetDelegate(this); | 71 web_view_->GetWebContents()->SetDelegate(this); |
74 const content::NavigationController* controller = | 72 const content::NavigationController* controller = |
75 &web_view_->GetWebContents()->GetController(); | 73 &web_view_->GetWebContents()->GetController(); |
76 registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_PENDING, | 74 registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_PENDING, |
77 content::Source<content::NavigationController>(controller)); | 75 content::Source<content::NavigationController>(controller)); |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
145 mojom::ViewClientPtr client; | 143 mojom::ViewClientPtr client; |
146 mojom::ViewPtr view; | 144 mojom::ViewPtr view; |
147 mojom::ViewRequest view_request = GetProxy(&view); | 145 mojom::ViewRequest view_request = GetProxy(&view); |
148 client_->ViewCreated(std::move(view), GetProxy(&client), | 146 client_->ViewCreated(std::move(view), GetProxy(&client), |
149 disposition == WindowOpenDisposition::NEW_POPUP, | 147 disposition == WindowOpenDisposition::NEW_POPUP, |
150 initial_rect, user_gesture); | 148 initial_rect, user_gesture); |
151 | 149 |
152 const std::string new_user_id = | 150 const std::string new_user_id = |
153 content::BrowserContext::GetShellUserIdFor( | 151 content::BrowserContext::GetShellUserIdFor( |
154 new_contents->GetBrowserContext()); | 152 new_contents->GetBrowserContext()); |
155 ViewImpl* impl = new ViewImpl( | 153 auto impl = base::MakeUnique<ViewImpl>(connector_->Clone(), new_user_id, |
156 connector_->Clone(), new_user_id, std::move(client), | 154 std::move(client), ref_->Clone()); |
157 std::move(view_request), ref_->Clone()); | 155 |
158 // TODO(beng): This is a bit crappy. should be able to create the ViewImpl | 156 // TODO(beng): This is a bit crappy. should be able to create the ViewImpl |
159 // with |new_contents| instead. | 157 // with |new_contents| instead. |
160 impl->web_view_->SetWebContents(new_contents); | 158 impl->web_view_->SetWebContents(new_contents); |
161 impl->web_view_->GetWebContents()->SetDelegate(impl); | 159 impl->web_view_->GetWebContents()->SetDelegate(impl.get()); |
162 | 160 |
163 // TODO(beng): this reply is currently synchronous, figure out a fix. | 161 // TODO(beng): this reply is currently synchronous, figure out a fix. |
164 if (was_blocked) | 162 if (was_blocked) |
165 *was_blocked = false; | 163 *was_blocked = false; |
| 164 |
| 165 mojo::MakeStrongBinding(std::move(impl), std::move(view_request)); |
166 } | 166 } |
167 | 167 |
168 void ViewImpl::CloseContents(content::WebContents* source) { | 168 void ViewImpl::CloseContents(content::WebContents* source) { |
169 client_->Close(); | 169 client_->Close(); |
170 } | 170 } |
171 | 171 |
172 content::WebContents* ViewImpl::OpenURLFromTab( | 172 content::WebContents* ViewImpl::OpenURLFromTab( |
173 content::WebContents* source, | 173 content::WebContents* source, |
174 const content::OpenURLParams& params) { | 174 const content::OpenURLParams& params) { |
175 mojom::OpenURLParamsPtr params_ptr = mojom::OpenURLParams::New(); | 175 mojom::OpenURLParamsPtr params_ptr = mojom::OpenURLParams::New(); |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
299 | 299 |
300 views::Widget* ViewImpl::GetWidget() { | 300 views::Widget* ViewImpl::GetWidget() { |
301 return web_view_->GetWidget(); | 301 return web_view_->GetWidget(); |
302 } | 302 } |
303 | 303 |
304 const views::Widget* ViewImpl::GetWidget() const { | 304 const views::Widget* ViewImpl::GetWidget() const { |
305 return web_view_->GetWidget(); | 305 return web_view_->GetWidget(); |
306 } | 306 } |
307 | 307 |
308 } // navigation | 308 } // navigation |
OLD | NEW |