| 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 480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 491 | 491 |
| 492 /*static*/ | 492 /*static*/ |
| 493 RenderView* RenderView::Create( | 493 RenderView* RenderView::Create( |
| 494 RenderThreadBase* render_thread, | 494 RenderThreadBase* render_thread, |
| 495 gfx::NativeViewId parent_hwnd, | 495 gfx::NativeViewId parent_hwnd, |
| 496 int32 opener_id, | 496 int32 opener_id, |
| 497 const RendererPreferences& renderer_prefs, | 497 const RendererPreferences& renderer_prefs, |
| 498 const WebPreferences& webkit_prefs, | 498 const WebPreferences& webkit_prefs, |
| 499 SharedRenderViewCounter* counter, | 499 SharedRenderViewCounter* counter, |
| 500 int32 routing_id, | 500 int32 routing_id, |
| 501 int64 session_storage_namespace_id) { | 501 int64 session_storage_namespace_id, |
| 502 const string16& frame_name) { |
| 502 DCHECK(routing_id != MSG_ROUTING_NONE); | 503 DCHECK(routing_id != MSG_ROUTING_NONE); |
| 503 scoped_refptr<RenderView> view = new RenderView(render_thread, webkit_prefs, | 504 scoped_refptr<RenderView> view = new RenderView(render_thread, webkit_prefs, |
| 504 session_storage_namespace_id); | 505 session_storage_namespace_id); |
| 505 view->Init(parent_hwnd, | 506 view->Init(parent_hwnd, |
| 506 opener_id, | 507 opener_id, |
| 507 renderer_prefs, | 508 renderer_prefs, |
| 508 counter, | 509 counter, |
| 509 routing_id); // adds reference | 510 routing_id, |
| 511 frame_name); // adds reference |
| 510 return view; | 512 return view; |
| 511 } | 513 } |
| 512 | 514 |
| 513 /*static*/ | 515 /*static*/ |
| 514 void RenderView::SetNextPageID(int32 next_page_id) { | 516 void RenderView::SetNextPageID(int32 next_page_id) { |
| 515 // This method should only be called during process startup, and the given | 517 // This method should only be called during process startup, and the given |
| 516 // page id had better not exceed our current next page id! | 518 // page id had better not exceed our current next page id! |
| 517 DCHECK_EQ(next_page_id_, 1); | 519 DCHECK_EQ(next_page_id_, 1); |
| 518 DCHECK(next_page_id >= next_page_id_); | 520 DCHECK(next_page_id >= next_page_id_); |
| 519 next_page_id_ = next_page_id; | 521 next_page_id_ = next_page_id; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 534 | 536 |
| 535 void RenderView::UnregisterPluginDelegate(WebPluginDelegateProxy* delegate) { | 537 void RenderView::UnregisterPluginDelegate(WebPluginDelegateProxy* delegate) { |
| 536 plugin_delegates_.erase(delegate); | 538 plugin_delegates_.erase(delegate); |
| 537 } | 539 } |
| 538 #endif | 540 #endif |
| 539 | 541 |
| 540 void RenderView::Init(gfx::NativeViewId parent_hwnd, | 542 void RenderView::Init(gfx::NativeViewId parent_hwnd, |
| 541 int32 opener_id, | 543 int32 opener_id, |
| 542 const RendererPreferences& renderer_prefs, | 544 const RendererPreferences& renderer_prefs, |
| 543 SharedRenderViewCounter* counter, | 545 SharedRenderViewCounter* counter, |
| 544 int32 routing_id) { | 546 int32 routing_id, |
| 547 const string16& frame_name) { |
| 545 DCHECK(!webview()); | 548 DCHECK(!webview()); |
| 546 | 549 |
| 547 if (opener_id != MSG_ROUTING_NONE) | 550 if (opener_id != MSG_ROUTING_NONE) |
| 548 opener_id_ = opener_id; | 551 opener_id_ = opener_id; |
| 549 | 552 |
| 550 if (counter) { | 553 if (counter) { |
| 551 shared_popup_counter_ = counter; | 554 shared_popup_counter_ = counter; |
| 552 shared_popup_counter_->data++; | 555 shared_popup_counter_->data++; |
| 553 decrement_shared_popup_at_destruction_ = true; | 556 decrement_shared_popup_at_destruction_ = true; |
| 554 } else { | 557 } else { |
| 555 shared_popup_counter_ = new SharedRenderViewCounter(0); | 558 shared_popup_counter_ = new SharedRenderViewCounter(0); |
| 556 decrement_shared_popup_at_destruction_ = false; | 559 decrement_shared_popup_at_destruction_ = false; |
| 557 } | 560 } |
| 558 | 561 |
| 559 devtools_agent_.reset(new DevToolsAgent(routing_id, this)); | 562 devtools_agent_.reset(new DevToolsAgent(routing_id, this)); |
| 560 | 563 |
| 561 webwidget_ = WebView::create(this); | 564 webwidget_ = WebView::create(this); |
| 562 Singleton<ViewMap>::get()->insert(std::make_pair(webview(), this)); | 565 Singleton<ViewMap>::get()->insert(std::make_pair(webview(), this)); |
| 563 webkit_preferences_.Apply(webview()); | 566 webkit_preferences_.Apply(webview()); |
| 564 webview()->initializeMainFrame(this); | 567 webview()->initializeMainFrame(this); |
| 568 // TODO(atwilson): Enable this when setName() becomes available upstream. |
| 569 // if (!frame_name.empty) |
| 570 // webview()->mainFrame()->setName(frame_name); |
| 565 webview()->setDevToolsAgent( | 571 webview()->setDevToolsAgent( |
| 566 WebDevToolsAgent::create(webview(), devtools_agent_.get())); | 572 WebDevToolsAgent::create(webview(), devtools_agent_.get())); |
| 567 | 573 |
| 568 OnSetRendererPrefs(renderer_prefs); | 574 OnSetRendererPrefs(renderer_prefs); |
| 569 | 575 |
| 570 routing_id_ = routing_id; | 576 routing_id_ = routing_id; |
| 571 render_thread_->AddRoute(routing_id_, this); | 577 render_thread_->AddRoute(routing_id_, this); |
| 572 // Take a reference on behalf of the RenderThread. This will be balanced | 578 // Take a reference on behalf of the RenderThread. This will be balanced |
| 573 // when we receive ViewMsg_Close. | 579 // when we receive ViewMsg_Close. |
| 574 AddRef(); | 580 AddRef(); |
| (...skipping 1005 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1580 #else | 1586 #else |
| 1581 // TODO(port): Implement the infobar that accompanies the default plugin. | 1587 // TODO(port): Implement the infobar that accompanies the default plugin. |
| 1582 // Linux: http://crbug.com/10952 | 1588 // Linux: http://crbug.com/10952 |
| 1583 // Mac: http://crbug.com/17392 | 1589 // Mac: http://crbug.com/17392 |
| 1584 NOTIMPLEMENTED(); | 1590 NOTIMPLEMENTED(); |
| 1585 #endif | 1591 #endif |
| 1586 } | 1592 } |
| 1587 | 1593 |
| 1588 // WebKit::WebViewClient ------------------------------------------------------ | 1594 // WebKit::WebViewClient ------------------------------------------------------ |
| 1589 | 1595 |
| 1596 // TODO(atwilson): Remove this older API when we've pushed the related changes |
| 1597 // upstream. |
| 1590 WebView* RenderView::createView( | 1598 WebView* RenderView::createView( |
| 1591 WebFrame* creator, | 1599 WebFrame* creator, |
| 1592 const WebWindowFeatures& features) { | 1600 const WebWindowFeatures& features) { |
| 1601 return createView(creator, features, WebString()); |
| 1602 } |
| 1603 |
| 1604 WebView* RenderView::createView( |
| 1605 WebFrame* creator, |
| 1606 const WebWindowFeatures& features, |
| 1607 const WebString& frame_name) { |
| 1593 // Check to make sure we aren't overloading on popups. | 1608 // Check to make sure we aren't overloading on popups. |
| 1594 if (shared_popup_counter_->data > kMaximumNumberOfUnacknowledgedPopups) | 1609 if (shared_popup_counter_->data > kMaximumNumberOfUnacknowledgedPopups) |
| 1595 return NULL; | 1610 return NULL; |
| 1596 | 1611 |
| 1597 // This window can't be closed from a window.close() call until we receive a | 1612 // This window can't be closed from a window.close() call until we receive a |
| 1598 // message from the Browser process explicitly allowing it. | 1613 // message from the Browser process explicitly allowing it. |
| 1599 script_can_close_ = false; | 1614 script_can_close_ = false; |
| 1600 | 1615 |
| 1616 ViewHostMsg_CreateWindow_Params params; |
| 1617 params.opener_id = routing_id_; |
| 1618 params.user_gesture = creator->isProcessingUserGesture(); |
| 1619 params.window_container_type = WindowFeaturesToContainerType(features); |
| 1620 params.session_storage_namespace_id = session_storage_namespace_id_; |
| 1621 params.frame_name = frame_name; |
| 1622 |
| 1601 int32 routing_id = MSG_ROUTING_NONE; | 1623 int32 routing_id = MSG_ROUTING_NONE; |
| 1602 bool user_gesture = creator->isProcessingUserGesture(); | 1624 int64 cloned_session_storage_namespace_id; |
| 1603 bool opener_suppressed = creator->willSuppressOpenerInNewFrame(); | 1625 bool opener_suppressed = creator->willSuppressOpenerInNewFrame(); |
| 1604 int64 cloned_session_storage_namespace_id; | |
| 1605 | 1626 |
| 1606 render_thread_->Send( | 1627 render_thread_->Send( |
| 1607 new ViewHostMsg_CreateWindow( | 1628 new ViewHostMsg_CreateWindow(params, |
| 1608 routing_id_, | 1629 &routing_id, |
| 1609 user_gesture, | 1630 &cloned_session_storage_namespace_id)); |
| 1610 WindowFeaturesToContainerType(features), | |
| 1611 session_storage_namespace_id_, | |
| 1612 &routing_id, | |
| 1613 &cloned_session_storage_namespace_id)); | |
| 1614 if (routing_id == MSG_ROUTING_NONE) | 1631 if (routing_id == MSG_ROUTING_NONE) |
| 1615 return NULL; | 1632 return NULL; |
| 1616 | 1633 |
| 1617 RenderView* view = RenderView::Create(render_thread_, | 1634 RenderView* view = RenderView::Create(render_thread_, |
| 1618 0, | 1635 0, |
| 1619 routing_id_, | 1636 routing_id_, |
| 1620 renderer_preferences_, | 1637 renderer_preferences_, |
| 1621 webkit_preferences_, | 1638 webkit_preferences_, |
| 1622 shared_popup_counter_, | 1639 shared_popup_counter_, |
| 1623 routing_id, | 1640 routing_id, |
| 1624 cloned_session_storage_namespace_id); | 1641 cloned_session_storage_namespace_id, |
| 1625 view->opened_by_user_gesture_ = user_gesture; | 1642 frame_name); |
| 1643 view->opened_by_user_gesture_ = params.user_gesture; |
| 1626 | 1644 |
| 1627 // Record whether the creator frame is trying to suppress the opener field. | 1645 // Record whether the creator frame is trying to suppress the opener field. |
| 1628 view->opener_suppressed_ = opener_suppressed; | 1646 view->opener_suppressed_ = opener_suppressed; |
| 1629 | 1647 |
| 1630 // Record the security origin of the creator. | 1648 // Record the security origin of the creator. |
| 1631 GURL creator_url(creator->securityOrigin().toString().utf8()); | 1649 GURL creator_url(creator->securityOrigin().toString().utf8()); |
| 1632 if (!creator_url.is_valid() || !creator_url.IsStandard()) | 1650 if (!creator_url.is_valid() || !creator_url.IsStandard()) |
| 1633 creator_url = GURL(); | 1651 creator_url = GURL(); |
| 1634 view->creator_url_ = creator_url; | 1652 view->creator_url_ = creator_url; |
| 1635 | 1653 |
| (...skipping 3464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5100 webkit_glue::FormData form; | 5118 webkit_glue::FormData form; |
| 5101 const WebInputElement element = node.toConst<WebInputElement>(); | 5119 const WebInputElement element = node.toConst<WebInputElement>(); |
| 5102 if (!form_manager_.FindFormWithFormControlElement( | 5120 if (!form_manager_.FindFormWithFormControlElement( |
| 5103 element, FormManager::REQUIRE_NONE, &form)) | 5121 element, FormManager::REQUIRE_NONE, &form)) |
| 5104 return; | 5122 return; |
| 5105 | 5123 |
| 5106 autofill_action_ = action; | 5124 autofill_action_ = action; |
| 5107 Send(new ViewHostMsg_FillAutoFillFormData( | 5125 Send(new ViewHostMsg_FillAutoFillFormData( |
| 5108 routing_id_, autofill_query_id_, form, value, label)); | 5126 routing_id_, autofill_query_id_, form, value, label)); |
| 5109 } | 5127 } |
| OLD | NEW |