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

Side by Side Diff: chrome/browser/ui/views/location_bar/location_bar_view.cc

Issue 23441024: Implement put_accvalue for textfields and location bar. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Address feedback Created 7 years, 3 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/browser/ui/views/location_bar/location_bar_view.h" 5 #include "chrome/browser/ui/views/location_bar/location_bar_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <map> 8 #include <map>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 keyword_hint_view_(NULL), 183 keyword_hint_view_(NULL),
184 mic_search_view_(NULL), 184 mic_search_view_(NULL),
185 zoom_view_(NULL), 185 zoom_view_(NULL),
186 generated_credit_card_view_(NULL), 186 generated_credit_card_view_(NULL),
187 open_pdf_in_reader_view_(NULL), 187 open_pdf_in_reader_view_(NULL),
188 script_bubble_icon_view_(NULL), 188 script_bubble_icon_view_(NULL),
189 star_view_(NULL), 189 star_view_(NULL),
190 is_popup_mode_(is_popup_mode), 190 is_popup_mode_(is_popup_mode),
191 show_focus_rect_(false), 191 show_focus_rect_(false),
192 template_url_service_(NULL), 192 template_url_service_(NULL),
193 animation_offset_(0) { 193 animation_offset_(0),
194 weak_ptr_factory_(this) {
194 if (!views::Textfield::IsViewsTextfieldEnabled()) 195 if (!views::Textfield::IsViewsTextfieldEnabled())
195 set_id(VIEW_ID_OMNIBOX); 196 set_id(VIEW_ID_OMNIBOX);
196 197
197 const int kOmniboxBorderImages[] = IMAGE_GRID(IDR_OMNIBOX_BORDER); 198 const int kOmniboxBorderImages[] = IMAGE_GRID(IDR_OMNIBOX_BORDER);
198 const int kOmniboxPopupImages[] = IMAGE_GRID(IDR_OMNIBOX_POPUP_BORDER); 199 const int kOmniboxPopupImages[] = IMAGE_GRID(IDR_OMNIBOX_POPUP_BORDER);
199 background_border_painter_.reset( 200 background_border_painter_.reset(
200 views::Painter::CreateImageGridPainter( 201 views::Painter::CreateImageGridPainter(
201 is_popup_mode_ ? kOmniboxPopupImages : kOmniboxBorderImages)); 202 is_popup_mode_ ? kOmniboxPopupImages : kOmniboxBorderImages));
202 #if defined(OS_CHROMEOS) 203 #if defined(OS_CHROMEOS)
203 if (!is_popup_mode_) { 204 if (!is_popup_mode_) {
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after
628 DCHECK(zoom_view_); 629 DCHECK(zoom_view_);
629 RefreshZoomView(); 630 RefreshZoomView();
630 631
631 Layout(); 632 Layout();
632 SchedulePaint(); 633 SchedulePaint();
633 634
634 if (can_show_bubble && zoom_view_->visible() && delegate_->GetWebContents()) 635 if (can_show_bubble && zoom_view_->visible() && delegate_->GetWebContents())
635 ZoomBubbleView::ShowBubble(delegate_->GetWebContents(), true); 636 ZoomBubbleView::ShowBubble(delegate_->GetWebContents(), true);
636 } 637 }
637 638
638 void LocationBarView::RefreshZoomView() {
639 DCHECK(zoom_view_);
640 WebContents* web_contents = GetWebContents();
641 if (!web_contents)
642 return;
643
644 ZoomController* zoom_controller =
645 ZoomController::FromWebContents(web_contents);
646 zoom_view_->Update(zoom_controller);
647 }
648
649 gfx::Point LocationBarView::GetLocationEntryOrigin() const { 639 gfx::Point LocationBarView::GetLocationEntryOrigin() const {
650 gfx::Point origin(location_entry_view_->bounds().origin()); 640 gfx::Point origin(location_entry_view_->bounds().origin());
651 // If the UI layout is RTL, the coordinate system is not transformed and 641 // If the UI layout is RTL, the coordinate system is not transformed and
652 // therefore we need to adjust the X coordinate so that bubble appears on the 642 // therefore we need to adjust the X coordinate so that bubble appears on the
653 // right hand side of the location bar. 643 // right hand side of the location bar.
654 if (base::i18n::IsRTL()) 644 if (base::i18n::IsRTL())
655 origin.set_x(width() - origin.x()); 645 origin.set_x(width() - origin.x());
656 views::View::ConvertPointToScreen(this, &origin); 646 views::View::ConvertPointToScreen(this, &origin);
657 return origin; 647 return origin;
658 } 648 }
(...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after
1115 } 1105 }
1116 1106
1117 ToolbarModel* LocationBarView::GetToolbarModel() { 1107 ToolbarModel* LocationBarView::GetToolbarModel() {
1118 return delegate_->GetToolbarModel(); 1108 return delegate_->GetToolbarModel();
1119 } 1109 }
1120 1110
1121 const ToolbarModel* LocationBarView::GetToolbarModel() const { 1111 const ToolbarModel* LocationBarView::GetToolbarModel() const {
1122 return delegate_->GetToolbarModel(); 1112 return delegate_->GetToolbarModel();
1123 } 1113 }
1124 1114
1125 // static
1126 int LocationBarView::GetBuiltInHorizontalPaddingForChildViews() {
1127 return (ui::GetDisplayLayout() == ui::LAYOUT_TOUCH) ?
1128 GetItemPadding() / 2 : 0;
1129 }
1130
1131 int LocationBarView::GetHorizontalEdgeThickness() const {
1132 // In maximized popup mode, there isn't any edge.
1133 return (is_popup_mode_ && browser_ && browser_->window() &&
1134 browser_->window()->IsMaximized()) ? 0 : vertical_edge_thickness();
1135 }
1136
1137 void LocationBarView::RefreshContentSettingViews() {
1138 for (ContentSettingViews::const_iterator i(content_setting_views_.begin());
1139 i != content_setting_views_.end(); ++i) {
1140 (*i)->Update(GetToolbarModel()->input_in_progress() ?
1141 NULL : GetWebContents());
1142 }
1143 }
1144
1145 void LocationBarView::DeletePageActionViews() {
1146 for (PageActionViews::const_iterator i(page_action_views_.begin());
1147 i != page_action_views_.end(); ++i)
1148 RemoveChildView(*i);
1149 STLDeleteElements(&page_action_views_);
1150 }
1151
1152 void LocationBarView::RefreshPageActionViews() {
1153 if (is_popup_mode_)
1154 return;
1155
1156 // Remember the previous visibility of the page actions so that we can
1157 // notify when this changes.
1158 std::map<ExtensionAction*, bool> old_visibility;
1159 for (PageActionViews::const_iterator i(page_action_views_.begin());
1160 i != page_action_views_.end(); ++i) {
1161 old_visibility[(*i)->image_view()->page_action()] = (*i)->visible();
1162 }
1163
1164 std::vector<ExtensionAction*> new_page_actions;
1165
1166 WebContents* contents = delegate_->GetWebContents();
1167 if (contents) {
1168 extensions::TabHelper* extensions_tab_helper =
1169 extensions::TabHelper::FromWebContents(contents);
1170 extensions::LocationBarController* controller =
1171 extensions_tab_helper->location_bar_controller();
1172 new_page_actions = controller->GetCurrentActions();
1173 }
1174
1175 // On startup we sometimes haven't loaded any extensions. This makes sure
1176 // we catch up when the extensions (and any page actions) load.
1177 if (page_actions_ != new_page_actions) {
1178 page_actions_.swap(new_page_actions);
1179 DeletePageActionViews(); // Delete the old views (if any).
1180
1181 page_action_views_.resize(page_actions_.size());
1182 View* right_anchor = open_pdf_in_reader_view_;
1183 if (!right_anchor)
1184 right_anchor = star_view_;
1185 if (!right_anchor)
1186 right_anchor = script_bubble_icon_view_;
1187 DCHECK(right_anchor);
1188
1189 // Add the page actions in reverse order, so that the child views are
1190 // inserted in left-to-right order for accessibility.
1191 for (int i = page_actions_.size() - 1; i >= 0; --i) {
1192 page_action_views_[i] = new PageActionWithBadgeView(
1193 delegate_->CreatePageActionImageView(this, page_actions_[i]));
1194 page_action_views_[i]->SetVisible(false);
1195 AddChildViewAt(page_action_views_[i], GetIndexOf(right_anchor));
1196 }
1197 }
1198
1199 if (!page_action_views_.empty() && contents) {
1200 Browser* browser = chrome::FindBrowserWithWebContents(contents);
1201 GURL url = browser->tab_strip_model()->GetActiveWebContents()->GetURL();
1202
1203 for (PageActionViews::const_iterator i(page_action_views_.begin());
1204 i != page_action_views_.end(); ++i) {
1205 (*i)->UpdateVisibility(
1206 GetToolbarModel()->input_in_progress() ? NULL : contents, url);
1207
1208 // Check if the visibility of the action changed and notify if it did.
1209 ExtensionAction* action = (*i)->image_view()->page_action();
1210 if (old_visibility.find(action) == old_visibility.end() ||
1211 old_visibility[action] != (*i)->visible()) {
1212 content::NotificationService::current()->Notify(
1213 chrome::NOTIFICATION_EXTENSION_PAGE_ACTION_VISIBILITY_CHANGED,
1214 content::Source<ExtensionAction>(action),
1215 content::Details<WebContents>(contents));
1216 }
1217 }
1218 }
1219 }
1220
1221 size_t LocationBarView::ScriptBubbleScriptsRunning() {
1222 WebContents* contents = delegate_->GetWebContents();
1223 if (!contents)
1224 return false;
1225 extensions::TabHelper* extensions_tab_helper =
1226 extensions::TabHelper::FromWebContents(contents);
1227 if (!extensions_tab_helper)
1228 return false;
1229 extensions::ScriptBubbleController* script_bubble_controller =
1230 extensions_tab_helper->script_bubble_controller();
1231 if (!script_bubble_controller)
1232 return false;
1233 size_t script_count =
1234 script_bubble_controller->extensions_running_scripts().size();
1235 return script_count;
1236 }
1237
1238 void LocationBarView::RefreshScriptBubble() {
1239 if (!script_bubble_icon_view_)
1240 return;
1241 size_t script_count = ScriptBubbleScriptsRunning();
1242 script_bubble_icon_view_->SetVisible(script_count > 0);
1243 if (script_count > 0)
1244 script_bubble_icon_view_->SetScriptCount(script_count);
1245 }
1246
1247 #if defined(OS_WIN) && !defined(USE_AURA)
1248 void LocationBarView::OnMouseEvent(const ui::MouseEvent& event, UINT msg) {
1249 OmniboxViewWin* omnibox_win = GetOmniboxViewWin(location_entry_.get());
1250 if (omnibox_win) {
1251 UINT flags = event.native_event().wParam;
1252 gfx::Point screen_point(event.location());
1253 ConvertPointToScreen(this, &screen_point);
1254 omnibox_win->HandleExternalMsg(msg, flags, screen_point.ToPOINT());
1255 }
1256 }
1257 #endif
1258
1259 void LocationBarView::ShowFirstRunBubbleInternal() {
1260 #if !defined(OS_CHROMEOS)
1261 // First run bubble doesn't make sense for Chrome OS.
1262 Browser* browser = GetBrowserFromDelegate(delegate_);
1263 if (!browser)
1264 return; // Possible when browser is shutting down.
1265
1266 FirstRunBubble::ShowBubble(browser, location_icon_view_);
1267 #endif
1268 }
1269
1270 void LocationBarView::PaintPageActionBackgrounds(gfx::Canvas* canvas) {
1271 WebContents* web_contents = GetWebContents();
1272 // web_contents may be NULL while the browser is shutting down.
1273 if (!web_contents)
1274 return;
1275
1276 const int32 tab_id = SessionID::IdForTab(web_contents);
1277 const ToolbarModel::SecurityLevel security_level =
1278 GetToolbarModel()->GetSecurityLevel(false);
1279 const SkColor text_color = GetColor(security_level, TEXT);
1280 const SkColor background_color = GetColor(security_level, BACKGROUND);
1281
1282 for (PageActionViews::const_iterator
1283 page_action_view = page_action_views_.begin();
1284 page_action_view != page_action_views_.end();
1285 ++page_action_view) {
1286 gfx::Rect bounds = (*page_action_view)->bounds();
1287 int horizontal_padding =
1288 GetItemPadding() - GetBuiltInHorizontalPaddingForChildViews();
1289 // Make the bounding rectangle include the whole vertical range of the
1290 // location bar, and the mid-point pixels between adjacent page actions.
1291 //
1292 // For odd horizontal_paddings, "horizontal_padding + 1" includes the
1293 // mid-point between two page actions in the bounding rectangle. For even
1294 // paddings, the +1 is dropped, which is right since there is no pixel at
1295 // the mid-point.
1296 bounds.Inset(-(horizontal_padding + 1) / 2, 0);
1297 location_bar_util::PaintExtensionActionBackground(
1298 *(*page_action_view)->image_view()->page_action(),
1299 tab_id, canvas, bounds, text_color, background_color);
1300 }
1301 }
1302
1303 const char* LocationBarView::GetClassName() const { 1115 const char* LocationBarView::GetClassName() const {
1304 return kViewClassName; 1116 return kViewClassName;
1305 } 1117 }
1306 1118
1307 bool LocationBarView::SkipDefaultKeyEventProcessing(const ui::KeyEvent& event) { 1119 bool LocationBarView::SkipDefaultKeyEventProcessing(const ui::KeyEvent& event) {
1308 #if defined(OS_WIN) 1120 #if defined(OS_WIN)
1309 if (views::FocusManager::IsTabTraversalKeyEvent(event)) { 1121 if (views::FocusManager::IsTabTraversalKeyEvent(event)) {
1310 if (location_entry_->model()->popup_model()->IsOpen()) { 1122 if (location_entry_->model()->popup_model()->IsOpen()) {
1311 // Return true so that the edit sees the tab and moves the selection. 1123 // Return true so that the edit sees the tab and moves the selection.
1312 return true; 1124 return true;
(...skipping 12 matching lines...) Expand all
1325 return omnibox_win->SkipDefaultKeyEventProcessing(event); 1137 return omnibox_win->SkipDefaultKeyEventProcessing(event);
1326 #endif // USE_AURA 1138 #endif // USE_AURA
1327 #endif // OS_WIN 1139 #endif // OS_WIN
1328 1140
1329 // This method is not used for Linux ports. See FocusManager::OnKeyEvent() in 1141 // This method is not used for Linux ports. See FocusManager::OnKeyEvent() in
1330 // src/ui/views/focus/focus_manager.cc for details. 1142 // src/ui/views/focus/focus_manager.cc for details.
1331 return false; 1143 return false;
1332 } 1144 }
1333 1145
1334 void LocationBarView::GetAccessibleState(ui::AccessibleViewState* state) { 1146 void LocationBarView::GetAccessibleState(ui::AccessibleViewState* state) {
1147 if (!location_entry_)
1148 return;
1149
1335 state->role = ui::AccessibilityTypes::ROLE_LOCATION_BAR; 1150 state->role = ui::AccessibilityTypes::ROLE_LOCATION_BAR;
1336 state->name = l10n_util::GetStringUTF16(IDS_ACCNAME_LOCATION); 1151 state->name = l10n_util::GetStringUTF16(IDS_ACCNAME_LOCATION);
1337 state->value = location_entry_->GetText(); 1152 state->value = location_entry_->GetText();
1338 1153
1339 string16::size_type entry_start; 1154 string16::size_type entry_start;
1340 string16::size_type entry_end; 1155 string16::size_type entry_end;
1341 location_entry_->GetSelectionBounds(&entry_start, &entry_end); 1156 location_entry_->GetSelectionBounds(&entry_start, &entry_end);
1342 state->selection_start = entry_start; 1157 state->selection_start = entry_start;
1343 state->selection_end = entry_end; 1158 state->selection_end = entry_end;
1159
1160 if (is_popup_mode_) {
1161 state->state |= ui::AccessibilityTypes::STATE_READONLY;
1162 } else {
1163 state->set_value_callback =
1164 base::Bind(&LocationBarView::AccessibilitySetValue,
1165 weak_ptr_factory_.GetWeakPtr());
1166 }
1344 } 1167 }
1345 1168
1346 bool LocationBarView::HasFocus() const { 1169 bool LocationBarView::HasFocus() const {
1347 return location_entry_->model()->has_focus(); 1170 return location_entry_->model()->has_focus();
1348 } 1171 }
1349 1172
1350 void LocationBarView::OnBoundsChanged(const gfx::Rect& previous_bounds) { 1173 void LocationBarView::OnBoundsChanged(const gfx::Rect& previous_bounds) {
1351 if (browser_ && browser_->instant_controller() && parent()) 1174 if (browser_ && browser_->instant_controller() && parent())
1352 browser_->instant_controller()->SetOmniboxBounds(bounds()); 1175 browser_->instant_controller()->SetOmniboxBounds(bounds());
1353 OmniboxPopupView* popup = location_entry_->model()->popup_model()->view(); 1176 OmniboxPopupView* popup = location_entry_->model()->popup_model()->view();
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
1549 Layout(); 1372 Layout();
1550 } 1373 }
1551 } 1374 }
1552 1375
1553 int LocationBarView::GetInternalHeight(bool use_preferred_size) { 1376 int LocationBarView::GetInternalHeight(bool use_preferred_size) {
1554 int total_height = 1377 int total_height =
1555 use_preferred_size ? GetPreferredSize().height() : height(); 1378 use_preferred_size ? GetPreferredSize().height() : height();
1556 return std::max(total_height - (vertical_edge_thickness() * 2), 0); 1379 return std::max(total_height - (vertical_edge_thickness() * 2), 0);
1557 } 1380 }
1558 1381
1382 ////////////////////////////////////////////////////////////////////////////////
1383 // LocationBarView, private:
1384 //////
msw 2013/09/04 20:18:20 nit: finish the slash comment art or remove it.
dmazzoni 2013/09/04 22:01:09 Done.
1385
1386 // static
1387 int LocationBarView::GetBuiltInHorizontalPaddingForChildViews() {
1388 return (ui::GetDisplayLayout() == ui::LAYOUT_TOUCH) ?
1389 GetItemPadding() / 2 : 0;
1390 }
1391
1392 int LocationBarView::GetHorizontalEdgeThickness() const {
1393 // In maximized popup mode, there isn't any edge.
1394 return (is_popup_mode_ && browser_ && browser_->window() &&
1395 browser_->window()->IsMaximized()) ? 0 : vertical_edge_thickness();
1396 }
1397
1398 void LocationBarView::RefreshContentSettingViews() {
1399 for (ContentSettingViews::const_iterator i(content_setting_views_.begin());
1400 i != content_setting_views_.end(); ++i) {
1401 (*i)->Update(GetToolbarModel()->input_in_progress() ?
1402 NULL : GetWebContents());
1403 }
1404 }
1405
1406 void LocationBarView::DeletePageActionViews() {
1407 for (PageActionViews::const_iterator i(page_action_views_.begin());
1408 i != page_action_views_.end(); ++i)
1409 RemoveChildView(*i);
1410 STLDeleteElements(&page_action_views_);
1411 }
1412
1413 void LocationBarView::RefreshPageActionViews() {
1414 if (is_popup_mode_)
1415 return;
1416
1417 // Remember the previous visibility of the page actions so that we can
1418 // notify when this changes.
1419 std::map<ExtensionAction*, bool> old_visibility;
1420 for (PageActionViews::const_iterator i(page_action_views_.begin());
1421 i != page_action_views_.end(); ++i) {
1422 old_visibility[(*i)->image_view()->page_action()] = (*i)->visible();
1423 }
1424
1425 std::vector<ExtensionAction*> new_page_actions;
1426
1427 WebContents* contents = delegate_->GetWebContents();
1428 if (contents) {
1429 extensions::TabHelper* extensions_tab_helper =
1430 extensions::TabHelper::FromWebContents(contents);
1431 extensions::LocationBarController* controller =
1432 extensions_tab_helper->location_bar_controller();
1433 new_page_actions = controller->GetCurrentActions();
1434 }
1435
1436 // On startup we sometimes haven't loaded any extensions. This makes sure
1437 // we catch up when the extensions (and any page actions) load.
1438 if (page_actions_ != new_page_actions) {
1439 page_actions_.swap(new_page_actions);
1440 DeletePageActionViews(); // Delete the old views (if any).
1441
1442 page_action_views_.resize(page_actions_.size());
1443 View* right_anchor = open_pdf_in_reader_view_;
1444 if (!right_anchor)
1445 right_anchor = star_view_;
1446 if (!right_anchor)
1447 right_anchor = script_bubble_icon_view_;
1448 DCHECK(right_anchor);
1449
1450 // Add the page actions in reverse order, so that the child views are
1451 // inserted in left-to-right order for accessibility.
1452 for (int i = page_actions_.size() - 1; i >= 0; --i) {
1453 page_action_views_[i] = new PageActionWithBadgeView(
1454 delegate_->CreatePageActionImageView(this, page_actions_[i]));
1455 page_action_views_[i]->SetVisible(false);
1456 AddChildViewAt(page_action_views_[i], GetIndexOf(right_anchor));
1457 }
1458 }
1459
1460 if (!page_action_views_.empty() && contents) {
1461 Browser* browser = chrome::FindBrowserWithWebContents(contents);
1462 GURL url = browser->tab_strip_model()->GetActiveWebContents()->GetURL();
1463
1464 for (PageActionViews::const_iterator i(page_action_views_.begin());
1465 i != page_action_views_.end(); ++i) {
1466 (*i)->UpdateVisibility(
1467 GetToolbarModel()->input_in_progress() ? NULL : contents, url);
1468
1469 // Check if the visibility of the action changed and notify if it did.
1470 ExtensionAction* action = (*i)->image_view()->page_action();
1471 if (old_visibility.find(action) == old_visibility.end() ||
1472 old_visibility[action] != (*i)->visible()) {
1473 content::NotificationService::current()->Notify(
1474 chrome::NOTIFICATION_EXTENSION_PAGE_ACTION_VISIBILITY_CHANGED,
1475 content::Source<ExtensionAction>(action),
1476 content::Details<WebContents>(contents));
1477 }
1478 }
1479 }
1480 }
1481
1482 size_t LocationBarView::ScriptBubbleScriptsRunning() {
1483 WebContents* contents = delegate_->GetWebContents();
1484 if (!contents)
1485 return false;
1486 extensions::TabHelper* extensions_tab_helper =
1487 extensions::TabHelper::FromWebContents(contents);
1488 if (!extensions_tab_helper)
1489 return false;
1490 extensions::ScriptBubbleController* script_bubble_controller =
1491 extensions_tab_helper->script_bubble_controller();
1492 if (!script_bubble_controller)
1493 return false;
1494 size_t script_count =
1495 script_bubble_controller->extensions_running_scripts().size();
1496 return script_count;
1497 }
1498
1499 void LocationBarView::RefreshScriptBubble() {
1500 if (!script_bubble_icon_view_)
1501 return;
1502 size_t script_count = ScriptBubbleScriptsRunning();
1503 script_bubble_icon_view_->SetVisible(script_count > 0);
1504 if (script_count > 0)
1505 script_bubble_icon_view_->SetScriptCount(script_count);
1506 }
1507
1508 void LocationBarView::RefreshZoomView() {
1509 DCHECK(zoom_view_);
1510 WebContents* web_contents = GetWebContents();
1511 if (!web_contents)
1512 return;
1513
1514 ZoomController* zoom_controller =
1515 ZoomController::FromWebContents(web_contents);
1516 zoom_view_->Update(zoom_controller);
1517 }
1518
1519 #if defined(OS_WIN) && !defined(USE_AURA)
1520 void LocationBarView::OnMouseEvent(const ui::MouseEvent& event, UINT msg) {
1521 OmniboxViewWin* omnibox_win = GetOmniboxViewWin(location_entry_.get());
1522 if (omnibox_win) {
1523 UINT flags = event.native_event().wParam;
1524 gfx::Point screen_point(event.location());
1525 ConvertPointToScreen(this, &screen_point);
1526 omnibox_win->HandleExternalMsg(msg, flags, screen_point.ToPOINT());
1527 }
1528 }
1529 #endif
1530
1559 bool LocationBarView::HasValidSuggestText() const { 1531 bool LocationBarView::HasValidSuggestText() const {
1560 return suggested_text_view_->visible() && 1532 return suggested_text_view_->visible() &&
1561 !suggested_text_view_->size().IsEmpty(); 1533 !suggested_text_view_->size().IsEmpty();
1562 } 1534 }
1535
1536 void LocationBarView::ShowFirstRunBubbleInternal() {
1537 #if !defined(OS_CHROMEOS)
1538 // First run bubble doesn't make sense for Chrome OS.
1539 Browser* browser = GetBrowserFromDelegate(delegate_);
1540 if (!browser)
1541 return; // Possible when browser is shutting down.
1542
1543 FirstRunBubble::ShowBubble(browser, location_icon_view_);
1544 #endif
1545 }
1546
1547 void LocationBarView::PaintPageActionBackgrounds(gfx::Canvas* canvas) {
1548 WebContents* web_contents = GetWebContents();
1549 // web_contents may be NULL while the browser is shutting down.
1550 if (!web_contents)
1551 return;
1552
1553 const int32 tab_id = SessionID::IdForTab(web_contents);
1554 const ToolbarModel::SecurityLevel security_level =
1555 GetToolbarModel()->GetSecurityLevel(false);
1556 const SkColor text_color = GetColor(security_level, TEXT);
1557 const SkColor background_color = GetColor(security_level, BACKGROUND);
1558
1559 for (PageActionViews::const_iterator
1560 page_action_view = page_action_views_.begin();
1561 page_action_view != page_action_views_.end();
1562 ++page_action_view) {
1563 gfx::Rect bounds = (*page_action_view)->bounds();
1564 int horizontal_padding =
1565 GetItemPadding() - GetBuiltInHorizontalPaddingForChildViews();
1566 // Make the bounding rectangle include the whole vertical range of the
1567 // location bar, and the mid-point pixels between adjacent page actions.
1568 //
1569 // For odd horizontal_paddings, "horizontal_padding + 1" includes the
1570 // mid-point between two page actions in the bounding rectangle. For even
1571 // paddings, the +1 is dropped, which is right since there is no pixel at
1572 // the mid-point.
1573 bounds.Inset(-(horizontal_padding + 1) / 2, 0);
1574 location_bar_util::PaintExtensionActionBackground(
1575 *(*page_action_view)->image_view()->page_action(),
1576 tab_id, canvas, bounds, text_color, background_color);
1577 }
1578 }
1579
1580 void LocationBarView::AccessibilitySetValue(const string16& new_value) {
1581 location_entry_->SetUserText(new_value);
1582 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698