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

Side by Side Diff: chrome/renderer/render_view.cc

Issue 2775003: Added plumbing to transport the frame name between RenderViewHost and the Webkit layer. (Closed)
Patch Set: Final version for the record Created 10 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/renderer/render_view.h ('k') | chrome/test/render_view_test.cc » ('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 (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
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
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
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
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 }
OLDNEW
« no previous file with comments | « chrome/renderer/render_view.h ('k') | chrome/test/render_view_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698