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

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

Issue 17455: Autofill popup dismissed when page loses focus (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « chrome/renderer/render_widget.h ('k') | webkit/glue/chrome_client_impl.h » ('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) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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_widget.h" 5 #include "chrome/renderer/render_widget.h"
6 6
7 #include <windows.h> 7 #include <windows.h>
8 8
9 #include "base/gfx/point.h" 9 #include "base/gfx/point.h"
10 #include "base/gfx/size.h" 10 #include "base/gfx/size.h"
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 typedef std::queue< scoped_refptr<RenderWidget> > WidgetQueue; 62 typedef std::queue< scoped_refptr<RenderWidget> > WidgetQueue;
63 WidgetQueue queue_; 63 WidgetQueue queue_;
64 }; 64 };
65 65
66 DeferredCloses* DeferredCloses::current_ = NULL; 66 DeferredCloses* DeferredCloses::current_ = NULL;
67 67
68 } // namespace 68 } // namespace
69 69
70 /////////////////////////////////////////////////////////////////////////////// 70 ///////////////////////////////////////////////////////////////////////////////
71 71
72 RenderWidget::RenderWidget(RenderThreadBase* render_thread, 72 RenderWidget::RenderWidget(RenderThreadBase* render_thread, bool activatable)
73 bool focus_on_show)
74 : routing_id_(MSG_ROUTING_NONE), 73 : routing_id_(MSG_ROUTING_NONE),
75 opener_id_(MSG_ROUTING_NONE), 74 opener_id_(MSG_ROUTING_NONE),
76 render_thread_(render_thread), 75 render_thread_(render_thread),
77 host_window_(NULL), 76 host_window_(NULL),
78 current_paint_buf_(NULL), 77 current_paint_buf_(NULL),
79 current_scroll_buf_(NULL), 78 current_scroll_buf_(NULL),
80 next_paint_flags_(0), 79 next_paint_flags_(0),
81 paint_reply_pending_(false), 80 paint_reply_pending_(false),
82 did_show_(false), 81 did_show_(false),
83 closing_(false), 82 closing_(false),
84 is_hidden_(false), 83 is_hidden_(false),
85 needs_repainting_on_restore_(false), 84 needs_repainting_on_restore_(false),
86 has_focus_(false), 85 has_focus_(false),
87 ime_is_active_(false), 86 ime_is_active_(false),
88 ime_control_enable_ime_(true), 87 ime_control_enable_ime_(true),
89 ime_control_x_(-1), 88 ime_control_x_(-1),
90 ime_control_y_(-1), 89 ime_control_y_(-1),
91 ime_control_new_state_(false), 90 ime_control_new_state_(false),
92 ime_control_updated_(false), 91 ime_control_updated_(false),
93 ime_control_busy_(false), 92 ime_control_busy_(false),
94 focus_on_show_(focus_on_show) { 93 activatable_(activatable) {
95 RenderProcess::AddRefProcess(); 94 RenderProcess::AddRefProcess();
96 DCHECK(render_thread_); 95 DCHECK(render_thread_);
97 } 96 }
98 97
99 RenderWidget::~RenderWidget() { 98 RenderWidget::~RenderWidget() {
100 if (current_paint_buf_) { 99 if (current_paint_buf_) {
101 RenderProcess::FreeSharedMemory(current_paint_buf_); 100 RenderProcess::FreeSharedMemory(current_paint_buf_);
102 current_paint_buf_ = NULL; 101 current_paint_buf_ = NULL;
103 } 102 }
104 if (current_scroll_buf_) { 103 if (current_scroll_buf_) {
105 RenderProcess::FreeSharedMemory(current_scroll_buf_); 104 RenderProcess::FreeSharedMemory(current_scroll_buf_);
106 current_scroll_buf_ = NULL; 105 current_scroll_buf_ = NULL;
107 } 106 }
108 RenderProcess::ReleaseProcess(); 107 RenderProcess::ReleaseProcess();
109 } 108 }
110 109
111 /*static*/ 110 /*static*/
112 RenderWidget* RenderWidget::Create(int32 opener_id, 111 RenderWidget* RenderWidget::Create(int32 opener_id,
113 RenderThreadBase* render_thread, 112 RenderThreadBase* render_thread,
114 bool focus_on_show) { 113 bool activatable) {
115 DCHECK(opener_id != MSG_ROUTING_NONE); 114 DCHECK(opener_id != MSG_ROUTING_NONE);
116 scoped_refptr<RenderWidget> widget = new RenderWidget(render_thread, 115 scoped_refptr<RenderWidget> widget = new RenderWidget(render_thread,
117 focus_on_show); 116 activatable);
118 widget->Init(opener_id); // adds reference 117 widget->Init(opener_id); // adds reference
119 return widget; 118 return widget;
120 } 119 }
121 120
122 void RenderWidget::Init(int32 opener_id) { 121 void RenderWidget::Init(int32 opener_id) {
123 DCHECK(!webwidget_); 122 DCHECK(!webwidget_);
124 123
125 if (opener_id != MSG_ROUTING_NONE) 124 if (opener_id != MSG_ROUTING_NONE)
126 opener_id_ = opener_id; 125 opener_id_ = opener_id;
127 126
128 // Avoid a leak here by not assigning, since WebWidget::Create addrefs for us. 127 // Avoid a leak here by not assigning, since WebWidget::Create addrefs for us.
129 WebWidget* webwidget = WebWidget::Create(this); 128 WebWidget* webwidget = WebWidget::Create(this);
130 webwidget_.swap(&webwidget); 129 webwidget_.swap(&webwidget);
131 130
132 bool result = render_thread_->Send( 131 bool result = render_thread_->Send(
133 new ViewHostMsg_CreateWidget(opener_id, focus_on_show_, &routing_id_)); 132 new ViewHostMsg_CreateWidget(opener_id, activatable_, &routing_id_));
134 if (result) { 133 if (result) {
135 render_thread_->AddRoute(routing_id_, this); 134 render_thread_->AddRoute(routing_id_, this);
136 // Take a reference on behalf of the RenderThread. This will be balanced 135 // Take a reference on behalf of the RenderThread. This will be balanced
137 // when we receive ViewMsg_Close. 136 // when we receive ViewMsg_Close.
138 AddRef(); 137 AddRef();
139 } else { 138 } else {
140 DCHECK(false); 139 DCHECK(false);
141 } 140 }
142 } 141 }
143 142
(...skipping 626 matching lines...) Expand 10 before | Expand all | Expand 10 after
770 for (; i < plugin_window_moves_.size(); ++i) { 769 for (; i < plugin_window_moves_.size(); ++i) {
771 if (plugin_window_moves_[i].window == move.window) { 770 if (plugin_window_moves_[i].window == move.window) {
772 plugin_window_moves_[i] = move; 771 plugin_window_moves_[i] = move;
773 break; 772 break;
774 } 773 }
775 } 774 }
776 775
777 if (i == plugin_window_moves_.size()) 776 if (i == plugin_window_moves_.size())
778 plugin_window_moves_.push_back(move); 777 plugin_window_moves_.push_back(move);
779 } 778 }
OLDNEW
« no previous file with comments | « chrome/renderer/render_widget.h ('k') | webkit/glue/chrome_client_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698