Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/renderer/render_view.h" | 5 #include "chrome/renderer/render_view.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 460 | 460 |
| 461 /*static*/ | 461 /*static*/ |
| 462 RenderView* RenderView::Create( | 462 RenderView* RenderView::Create( |
| 463 RenderThreadBase* render_thread, | 463 RenderThreadBase* render_thread, |
| 464 gfx::NativeViewId parent_hwnd, | 464 gfx::NativeViewId parent_hwnd, |
| 465 int32 opener_id, | 465 int32 opener_id, |
| 466 const RendererPreferences& renderer_prefs, | 466 const RendererPreferences& renderer_prefs, |
| 467 const WebPreferences& webkit_prefs, | 467 const WebPreferences& webkit_prefs, |
| 468 SharedRenderViewCounter* counter, | 468 SharedRenderViewCounter* counter, |
| 469 int32 routing_id, | 469 int32 routing_id, |
| 470 int64 session_storage_namespace_id) { | 470 int64 session_storage_namespace_id, |
| 471 const string16& frame_name) { | |
| 471 DCHECK(routing_id != MSG_ROUTING_NONE); | 472 DCHECK(routing_id != MSG_ROUTING_NONE); |
| 472 scoped_refptr<RenderView> view = new RenderView(render_thread, webkit_prefs, | 473 scoped_refptr<RenderView> view = new RenderView(render_thread, webkit_prefs, |
| 473 session_storage_namespace_id); | 474 session_storage_namespace_id); |
| 474 view->Init(parent_hwnd, | 475 view->Init(parent_hwnd, |
| 475 opener_id, | 476 opener_id, |
| 476 renderer_prefs, | 477 renderer_prefs, |
| 477 counter, | 478 counter, |
| 478 routing_id); // adds reference | 479 routing_id, |
| 480 frame_name); // adds reference | |
| 479 return view; | 481 return view; |
| 480 } | 482 } |
| 481 | 483 |
| 482 /*static*/ | 484 /*static*/ |
| 483 void RenderView::SetNextPageID(int32 next_page_id) { | 485 void RenderView::SetNextPageID(int32 next_page_id) { |
| 484 // This method should only be called during process startup, and the given | 486 // This method should only be called during process startup, and the given |
| 485 // page id had better not exceed our current next page id! | 487 // page id had better not exceed our current next page id! |
| 486 DCHECK_EQ(next_page_id_, 1); | 488 DCHECK_EQ(next_page_id_, 1); |
| 487 DCHECK(next_page_id >= next_page_id_); | 489 DCHECK(next_page_id >= next_page_id_); |
| 488 next_page_id_ = next_page_id; | 490 next_page_id_ = next_page_id; |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 503 | 505 |
| 504 void RenderView::UnregisterPluginDelegate(WebPluginDelegateProxy* delegate) { | 506 void RenderView::UnregisterPluginDelegate(WebPluginDelegateProxy* delegate) { |
| 505 plugin_delegates_.erase(delegate); | 507 plugin_delegates_.erase(delegate); |
| 506 } | 508 } |
| 507 #endif | 509 #endif |
| 508 | 510 |
| 509 void RenderView::Init(gfx::NativeViewId parent_hwnd, | 511 void RenderView::Init(gfx::NativeViewId parent_hwnd, |
| 510 int32 opener_id, | 512 int32 opener_id, |
| 511 const RendererPreferences& renderer_prefs, | 513 const RendererPreferences& renderer_prefs, |
| 512 SharedRenderViewCounter* counter, | 514 SharedRenderViewCounter* counter, |
| 513 int32 routing_id) { | 515 int32 routing_id, |
| 516 const string16& frame_name) { | |
| 514 DCHECK(!webview()); | 517 DCHECK(!webview()); |
| 515 | 518 |
| 516 if (opener_id != MSG_ROUTING_NONE) | 519 if (opener_id != MSG_ROUTING_NONE) |
| 517 opener_id_ = opener_id; | 520 opener_id_ = opener_id; |
| 518 | 521 |
| 519 if (counter) { | 522 if (counter) { |
| 520 shared_popup_counter_ = counter; | 523 shared_popup_counter_ = counter; |
| 521 shared_popup_counter_->data++; | 524 shared_popup_counter_->data++; |
| 522 decrement_shared_popup_at_destruction_ = true; | 525 decrement_shared_popup_at_destruction_ = true; |
| 523 } else { | 526 } else { |
| 524 shared_popup_counter_ = new SharedRenderViewCounter(0); | 527 shared_popup_counter_ = new SharedRenderViewCounter(0); |
| 525 decrement_shared_popup_at_destruction_ = false; | 528 decrement_shared_popup_at_destruction_ = false; |
| 526 } | 529 } |
| 527 | 530 |
| 528 devtools_agent_.reset(new DevToolsAgent(routing_id, this)); | 531 devtools_agent_.reset(new DevToolsAgent(routing_id, this)); |
| 529 | 532 |
| 530 webwidget_ = WebView::create(this); | 533 webwidget_ = WebView::create(this); |
| 531 Singleton<ViewMap>::get()->insert(std::make_pair(webview(), this)); | 534 Singleton<ViewMap>::get()->insert(std::make_pair(webview(), this)); |
| 532 webkit_preferences_.Apply(webview()); | 535 webkit_preferences_.Apply(webview()); |
| 533 webview()->initializeMainFrame(this); | 536 webview()->initializeMainFrame(this); |
| 537 // TODO(atwilson): Enable this when setName() becomes available upstream. | |
| 538 // if (!frame_name.empty) | |
| 539 // webview()->mainFrame()->setName(frame_name); | |
| 534 webview()->setDevToolsAgent( | 540 webview()->setDevToolsAgent( |
| 535 WebDevToolsAgent::create(webview(), devtools_agent_.get())); | 541 WebDevToolsAgent::create(webview(), devtools_agent_.get())); |
| 536 | 542 |
| 537 OnSetRendererPrefs(renderer_prefs); | 543 OnSetRendererPrefs(renderer_prefs); |
| 538 | 544 |
| 539 routing_id_ = routing_id; | 545 routing_id_ = routing_id; |
| 540 render_thread_->AddRoute(routing_id_, this); | 546 render_thread_->AddRoute(routing_id_, this); |
| 541 // Take a reference on behalf of the RenderThread. This will be balanced | 547 // Take a reference on behalf of the RenderThread. This will be balanced |
| 542 // when we receive ViewMsg_Close. | 548 // when we receive ViewMsg_Close. |
| 543 AddRef(); | 549 AddRef(); |
| (...skipping 1010 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1554 #else | 1560 #else |
| 1555 // TODO(port): Implement the infobar that accompanies the default plugin. | 1561 // TODO(port): Implement the infobar that accompanies the default plugin. |
| 1556 // Linux: http://crbug.com/10952 | 1562 // Linux: http://crbug.com/10952 |
| 1557 // Mac: http://crbug.com/17392 | 1563 // Mac: http://crbug.com/17392 |
| 1558 NOTIMPLEMENTED(); | 1564 NOTIMPLEMENTED(); |
| 1559 #endif | 1565 #endif |
| 1560 } | 1566 } |
| 1561 | 1567 |
| 1562 // WebKit::WebViewClient ------------------------------------------------------ | 1568 // WebKit::WebViewClient ------------------------------------------------------ |
| 1563 | 1569 |
| 1570 // TODO(atwilson): Remove this older API when we've pushed the related changes | |
| 1571 // upstream. | |
| 1564 WebView* RenderView::createView( | 1572 WebView* RenderView::createView( |
| 1565 WebFrame* creator, | 1573 WebFrame* creator, |
| 1566 const WebWindowFeatures& features) { | 1574 const WebWindowFeatures& features) { |
| 1575 return createView(creator, features, WebString()); | |
| 1576 } | |
| 1577 | |
| 1578 WebView* RenderView::createView( | |
| 1579 WebFrame* creator, | |
| 1580 const WebWindowFeatures& features, | |
| 1581 const WebString& frame_name) { | |
| 1567 // Check to make sure we aren't overloading on popups. | 1582 // Check to make sure we aren't overloading on popups. |
| 1568 if (shared_popup_counter_->data > kMaximumNumberOfUnacknowledgedPopups) | 1583 if (shared_popup_counter_->data > kMaximumNumberOfUnacknowledgedPopups) |
| 1569 return NULL; | 1584 return NULL; |
| 1570 | 1585 |
| 1571 // This window can't be closed from a window.close() call until we receive a | 1586 // This window can't be closed from a window.close() call until we receive a |
| 1572 // message from the Browser process explicitly allowing it. | 1587 // message from the Browser process explicitly allowing it. |
| 1573 script_can_close_ = false; | 1588 script_can_close_ = false; |
| 1574 | 1589 |
| 1590 ViewHostMsg_CreateWindow_Params params; | |
| 1591 params.opener_id = routing_id_; | |
| 1592 params.user_gesture = creator->isProcessingUserGesture(); | |
| 1593 params.window_container_type = WindowFeaturesToContainerType(features); | |
| 1594 params.session_storage_namespace_id = session_storage_namespace_id_; | |
| 1595 params.frame_name = frame_name; | |
| 1596 | |
| 1575 int32 routing_id = MSG_ROUTING_NONE; | 1597 int32 routing_id = MSG_ROUTING_NONE; |
| 1576 bool user_gesture = creator->isProcessingUserGesture(); | 1598 int64 cloned_session_storage_namespace_id; |
| 1577 bool opener_suppressed = creator->willSuppressOpenerInNewFrame(); | 1599 bool opener_suppressed = creator->willSuppressOpenerInNewFrame(); |
| 1578 int64 cloned_session_storage_namespace_id; | |
| 1579 | 1600 |
| 1580 render_thread_->Send( | 1601 render_thread_->Send( |
| 1581 new ViewHostMsg_CreateWindow( | 1602 new ViewHostMsg_CreateWindow( |
| 1582 routing_id_, | 1603 params, &routing_id, &cloned_session_storage_namespace_id)); |
|
rafaelw
2010/06/10 22:48:05
start params on previous line. indent to align on
| |
| 1583 user_gesture, | |
| 1584 WindowFeaturesToContainerType(features), | |
| 1585 session_storage_namespace_id_, | |
| 1586 &routing_id, | |
| 1587 &cloned_session_storage_namespace_id)); | |
| 1588 if (routing_id == MSG_ROUTING_NONE) | 1604 if (routing_id == MSG_ROUTING_NONE) |
| 1589 return NULL; | 1605 return NULL; |
| 1590 | 1606 |
| 1591 RenderView* view = RenderView::Create(render_thread_, | 1607 RenderView* view = RenderView::Create(render_thread_, |
| 1592 0, | 1608 0, |
| 1593 routing_id_, | 1609 routing_id_, |
| 1594 renderer_preferences_, | 1610 renderer_preferences_, |
| 1595 webkit_preferences_, | 1611 webkit_preferences_, |
| 1596 shared_popup_counter_, | 1612 shared_popup_counter_, |
| 1597 routing_id, | 1613 routing_id, |
| 1598 cloned_session_storage_namespace_id); | 1614 cloned_session_storage_namespace_id, |
| 1599 view->opened_by_user_gesture_ = user_gesture; | 1615 frame_name); |
| 1616 view->opened_by_user_gesture_ = params.user_gesture; | |
| 1600 | 1617 |
| 1601 // Record whether the creator frame is trying to suppress the opener field. | 1618 // Record whether the creator frame is trying to suppress the opener field. |
| 1602 view->opener_suppressed_ = opener_suppressed; | 1619 view->opener_suppressed_ = opener_suppressed; |
| 1603 | 1620 |
| 1604 // Record the security origin of the creator. | 1621 // Record the security origin of the creator. |
| 1605 GURL creator_url(creator->securityOrigin().toString().utf8()); | 1622 GURL creator_url(creator->securityOrigin().toString().utf8()); |
| 1606 if (!creator_url.is_valid() || !creator_url.IsStandard()) | 1623 if (!creator_url.is_valid() || !creator_url.IsStandard()) |
| 1607 creator_url = GURL(); | 1624 creator_url = GURL(); |
| 1608 view->creator_url_ = creator_url; | 1625 view->creator_url_ = creator_url; |
| 1609 | 1626 |
| (...skipping 3500 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5110 webkit_glue::FormData form; | 5127 webkit_glue::FormData form; |
| 5111 const WebInputElement element = node.toConst<WebInputElement>(); | 5128 const WebInputElement element = node.toConst<WebInputElement>(); |
| 5112 if (!form_manager_.FindFormWithFormControlElement( | 5129 if (!form_manager_.FindFormWithFormControlElement( |
| 5113 element, FormManager::REQUIRE_NONE, &form)) | 5130 element, FormManager::REQUIRE_NONE, &form)) |
| 5114 return; | 5131 return; |
| 5115 | 5132 |
| 5116 autofill_action_ = action; | 5133 autofill_action_ = action; |
| 5117 Send(new ViewHostMsg_FillAutoFillFormData( | 5134 Send(new ViewHostMsg_FillAutoFillFormData( |
| 5118 routing_id_, autofill_query_id_, form, value, label)); | 5135 routing_id_, autofill_query_id_, form, value, label)); |
| 5119 } | 5136 } |
| OLD | NEW |