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

Side by Side Diff: third_party/WebKit/Source/core/paint/ThemePainterDefault.cpp

Issue 2359753003: Security fix while computing dropdown menu arrow width (Closed)
Patch Set: Updated test expectations Created 4 years, 2 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 | « third_party/WebKit/LayoutTests/TestExpectations ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2007 Apple Inc. 2 * Copyright (C) 2007 Apple Inc.
3 * Copyright (C) 2007 Alp Toker <alp@atoker.com> 3 * Copyright (C) 2007 Alp Toker <alp@atoker.com>
4 * Copyright (C) 2008 Collabora Ltd. 4 * Copyright (C) 2008 Collabora Ltd.
5 * Copyright (C) 2008, 2009 Google Inc. 5 * Copyright (C) 2008, 2009 Google Inc.
6 * Copyright (C) 2009 Kenneth Rohde Christiansen 6 * Copyright (C) 2009 Kenneth Rohde Christiansen
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 24 matching lines...) Expand all
35 #include "platform/graphics/GraphicsContextStateSaver.h" 35 #include "platform/graphics/GraphicsContextStateSaver.h"
36 #include "public/platform/Platform.h" 36 #include "public/platform/Platform.h"
37 #include "public/platform/WebRect.h" 37 #include "public/platform/WebRect.h"
38 #include "public/platform/WebThemeEngine.h" 38 #include "public/platform/WebThemeEngine.h"
39 39
40 namespace blink { 40 namespace blink {
41 41
42 namespace { 42 namespace {
43 43
44 const unsigned defaultButtonBackgroundColor = 0xffdddddd; 44 const unsigned defaultButtonBackgroundColor = 0xffdddddd;
45 const unsigned dropdownMenuListArrowPadding = 3; 45 const unsigned mockDropdownMenuListArrowPadding = 3;
46 // This is equal to the padding provided by the LayoutMenuList which is
47 // calculated based on |menuListArrowPaddingSize| in LayoutThemeDefault.
48 const unsigned mockDropdownMenuListArrowWidth = 18;
46 49
47 bool useMockTheme() 50 bool useMockTheme()
48 { 51 {
49 return LayoutTestSupport::isMockThemeEnabledForTest(); 52 return LayoutTestSupport::isMockThemeEnabledForTest();
50 } 53 }
51 54
52 WebThemeEngine::State getWebThemeState(const LayoutObject& o) 55 WebThemeEngine::State getWebThemeState(const LayoutObject& o)
53 { 56 {
54 if (!LayoutTheme::isEnabled(o)) 57 if (!LayoutTheme::isEnabled(o))
55 return WebThemeEngine::StateDisabled; 58 return WebThemeEngine::StateDisabled;
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 259
257 void ThemePainterDefault::setupMenuListArrow(const LayoutBox& box, const IntRect & rect, WebThemeEngine::ExtraParams& extraParams) 260 void ThemePainterDefault::setupMenuListArrow(const LayoutBox& box, const IntRect & rect, WebThemeEngine::ExtraParams& extraParams)
258 { 261 {
259 const int right = rect.x() + rect.width(); 262 const int right = rect.x() + rect.width();
260 const int middle = rect.y() + rect.height() / 2; 263 const int middle = rect.y() + rect.height() / 2;
261 264
262 extraParams.menuList.arrowY = middle; 265 extraParams.menuList.arrowY = middle;
263 if (useMockTheme()) { 266 if (useMockTheme()) {
264 // The size and position of the drop-down button is different between 267 // The size and position of the drop-down button is different between
265 // the mock theme and the regular aura theme. 268 // the mock theme and the regular aura theme.
266 int extraPadding = dropdownMenuListArrowPadding * box.styleRef().effecti veZoom(); 269 int extraPadding = mockDropdownMenuListArrowPadding * box.styleRef().eff ectiveZoom();
267 // The width available for the arrow is based on the padding provided 270 int arrowBoxWidth = mockDropdownMenuListArrowWidth * box.styleRef().effe ctiveZoom();
268 // in the child LayoutBox.
269 int arrowBoxWidth = ((box.styleRef().direction() == RTL) ? box.firstChil dBox()->paddingLeft() : box.firstChildBox()->paddingRight()).toInt();
270 int arrowSize = std::min(arrowBoxWidth, rect.height()) - 2 * extraPaddin g; 271 int arrowSize = std::min(arrowBoxWidth, rect.height()) - 2 * extraPaddin g;
271 extraParams.menuList.arrowX = (box.styleRef().direction() == RTL) ? rect .x() + extraPadding + (arrowSize / 2) : right - (arrowSize / 2) - extraPadding; 272 extraParams.menuList.arrowX = (box.styleRef().direction() == RTL) ? rect .x() + extraPadding + (arrowSize / 2) : right - (arrowSize / 2) - extraPadding;
272 extraParams.menuList.arrowSize = arrowSize; 273 extraParams.menuList.arrowSize = arrowSize;
273 } else { 274 } else {
274 const int arrowSize = 6; 275 const int arrowSize = 6;
275 const int arrowPadding = 6; 276 const int arrowPadding = 6;
276 extraParams.menuList.arrowX = (box.styleRef().direction() == RTL) 277 extraParams.menuList.arrowX = (box.styleRef().direction() == RTL)
277 ? rect.x() + arrowPadding * box.styleRef().effectiveZoom() + box.bor derLeft() 278 ? rect.x() + arrowPadding * box.styleRef().effectiveZoom() + box.bor derLeft()
278 : right - (arrowSize + arrowPadding) * box.styleRef().effectiveZoom( ) - box.borderRight(); 279 : right - (arrowSize + arrowPadding) * box.styleRef().effectiveZoom( ) - box.borderRight();
279 extraParams.menuList.arrowSize = arrowSize * box.styleRef().effectiveZoo m(); 280 extraParams.menuList.arrowSize = arrowSize * box.styleRef().effectiveZoo m();
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
395 cancelButtonSize, cancelButtonSize); 396 cancelButtonSize, cancelButtonSize);
396 IntRect paintingRect = convertToPaintingRect(inputLayoutBox, cancelButtonObj ect, cancelButtonRect, r); 397 IntRect paintingRect = convertToPaintingRect(inputLayoutBox, cancelButtonObj ect, cancelButtonRect, r);
397 398
398 DEFINE_STATIC_REF(Image, cancelImage, (Image::loadPlatformResource("searchCa ncel"))); 399 DEFINE_STATIC_REF(Image, cancelImage, (Image::loadPlatformResource("searchCa ncel")));
399 DEFINE_STATIC_REF(Image, cancelPressedImage, (Image::loadPlatformResource("s earchCancelPressed"))); 400 DEFINE_STATIC_REF(Image, cancelPressedImage, (Image::loadPlatformResource("s earchCancelPressed")));
400 paintInfo.context.drawImage(LayoutTheme::isPressed(cancelButtonObject) ? can celPressedImage : cancelImage, paintingRect); 401 paintInfo.context.drawImage(LayoutTheme::isPressed(cancelButtonObject) ? can celPressedImage : cancelImage, paintingRect);
401 return false; 402 return false;
402 } 403 }
403 404
404 } // namespace blink 405 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/LayoutTests/TestExpectations ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698