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

Side by Side Diff: Source/core/rendering/InlineIterator.h

Issue 23298002: Fix nested unicode-bidi: isolate (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Proposed patch Created 7 years, 4 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 /* 1 /*
2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009, 2010 Apple Inc. All right r eserved. 3 * Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009, 2010 Apple Inc. All right r eserved.
4 * Copyright (C) 2010 Google Inc. All rights reserved. 4 * Copyright (C) 2010 Google Inc. All rights reserved.
5 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after
410 410
411 static inline bool isIsolatedInline(RenderObject* object) 411 static inline bool isIsolatedInline(RenderObject* object)
412 { 412 {
413 ASSERT(object); 413 ASSERT(object);
414 return object->isRenderInline() && isIsolated(object->style()->unicodeBidi() ); 414 return object->isRenderInline() && isIsolated(object->style()->unicodeBidi() );
415 } 415 }
416 416
417 static inline RenderObject* containingIsolate(RenderObject* object, RenderObject * root) 417 static inline RenderObject* containingIsolate(RenderObject* object, RenderObject * root)
418 { 418 {
419 ASSERT(object); 419 ASSERT(object);
420 RenderObject* containingIsolateObj = 0;
420 while (object && object != root) { 421 while (object && object != root) {
422 if (containingIsolateObj && !isIsolatedInline(object))
423 break;
424
421 if (isIsolatedInline(object)) 425 if (isIsolatedInline(object))
422 return object; 426 containingIsolateObj = object;
427
423 object = object->parent(); 428 object = object->parent();
424 } 429 }
425 return 0; 430 return containingIsolateObj;
426 } 431 }
427 432
428 static inline unsigned numberOfIsolateAncestors(const InlineIterator& iter) 433 static inline unsigned numberOfIsolateAncestors(const InlineIterator& iter)
429 { 434 {
430 RenderObject* object = iter.object(); 435 RenderObject* object = iter.object();
431 if (!object) 436 if (!object)
432 return 0; 437 return 0;
433 unsigned count = 0; 438 unsigned count = 0;
434 while (object && object != iter.root()) { 439 while (object && object != iter.root()) {
435 if (isIsolatedInline(object)) 440 if (isIsolatedInline(object))
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
537 m_sor = m_eor; 542 m_sor = m_eor;
538 } 543 }
539 544
540 m_direction = WTF::Unicode::OtherNeutral; 545 m_direction = WTF::Unicode::OtherNeutral;
541 m_status.eor = WTF::Unicode::OtherNeutral; 546 m_status.eor = WTF::Unicode::OtherNeutral;
542 } 547 }
543 548
544 } 549 }
545 550
546 #endif // InlineIterator_h 551 #endif // InlineIterator_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698