Permalink
Switch branches/tags
RELEASE_BASE_20140602 RELEASE_BASE_20140421 RELEASE_BASE_20140310 RELEASE_BASE_20140127 RELEASE_BASE_20131202 RELEASE_BASE_20131021 RELEASE_BASE_20130909 RELEASE_BASE_20130729 RELEASE_BASE_20130617 RELEASE_BASE_20130506 RELEASE_BASE_20130326 RELEASE_BASE_20130214 RELEASE_BASE_20130103 RELEASE_BASE_20121114 RELEASE_BASE_20121005 RELEASE_BASE_20120824 RELEASE_BASE_20120713 RELEASE_BASE_20120531 RELEASE_BASE_20120420 RELEASE_BASE_20120308 RELEASE_BASE_20120128 RELEASE_BASE_20111216 RELEASE_BASE_20111104 RELEASE_BASE_20110922 RELEASE_BASE_20110811 B2G_2_5_20160125_MERGEDAY B2G_2_5_20151214_MERGEDAY B2G_2_2_20151214_MERGEDAY B2G_2_2_20151029_MERGEDAY B2G_2_2_20150921_MERGEDAY B2G_2_2_20150810_MERGEDAY B2G_2_2_20150629_MERGEDAY B2G_2_2_20150511_MERGEDAY B2G_2_2_20150223_MERGEDAY B2G_2_2r_20151214_MERGEDAY B2G_2_2r_20151029_MERGEDAY B2G_2_2r_20150921_MERGEDAY B2G_2_2r_20150810_MERGEDAY B2G_2_1_20150629_MERGEDAY B2G_2_1_20150511_MERGEDAY B2G_2_1_20150223_MERGEDAY B2G_2_1_20150112_MERGEDAY B2G_2_1_20141013_MERGEDAY B2G_2_1_20140902_MERGEDAY B2G_2_1s_20150810_MERGEDAY B2G_2_1s_20150629_MERGEDAY B2G_2_1s_20150511_MERGEDAY B2G_2_1s_20150223_MERGEDAY B2G_2_1s_END B2G_2_1_END B2G_2_0_20150629_MERGEDAY B2G_2_0_20150511_MERGEDAY B2G_2_0_20150223_MERGEDAY B2G_2_0_20150112_MERGEDAY B2G_2_0_20141013_MERGEDAY B2G_2_0_20140902_MERGEDAY B2G_2_0_20140721_MERGEDAY B2G_2_0_20140609_MERGEDAY B2G_2_0M_END B2G_2_0_END B2G_1_4_20150511_MERGEDAY B2G_1_4_20150330_MERGEDAY B2G_1_4_20150223_MERGEDAY B2G_1_4_20150112_MERGEDAY B2G_1_4_20141013_MERGEDAY B2G_1_4_20140902_MERGEDAY B2G_1_4_20140721_MERGEDAY B2G_1_4_20140609_MERGEDAY B2G_1_4_20140428_MERGEDAY B2G_1_4_20140317_MERGEDAY B2G_1_3_20140902_MERGEDAY B2G_1_3_20140721_MERGEDAY B2G_1_3_20140609_MERGEDAY B2G_1_3_20140428_MERGEDAY B2G_1_3_20140317_MERGEDAY B2G_1_3_20140203_MERGEDAY B2G_1_3T_20141013_MERGEDAY B2G_1_3T_20140902_MERGEDAY B2G_1_3T_20140721_MERGEDAY B2G_1_3T_20140609_MERGEDAY B2G_1_3T_20140428_MERGEDAY B2G_1_3T_20140317_MERGEDAY B2G_1_2_20140428_MERGEDAY B2G_1_2_20140317_MERGEDAY B2G_1_2_20140203_MERGEDAY B2G_1_1_20140428_MERGEDAY B2G_1_1_20140317_MERGEDAY B2G_1_1_20140203_MERGEDAY B2G_1_1_0_hd_20140428_MERGEDAY B2G_1_1_0_hd_20140317_MERGEDAY B2G_1_1_0_hd_20140203_MERGEDAY B2G_1_1_0_hd_20130530182315 B2G_1_1_0_hd_20130530182315_BASE B2G_1_0_1_20130217163900 B2G_1_0_1_20130213094222 B2G_1_0_1_20130213094222_BASE B2G_1_0_0_20130125190500 B2G_1_0_0_20130115070201
Nothing to show
Commits on Nov 14, 2017
Commits on Oct 5, 2017
  1. Bug 1405875 - Remove old regression test harness in layout/tools/test…

    dbaron committed Oct 5, 2017
    …s/regression_tests.*. r=mats
    
    MozReview-Commit-ID: JWRxF8c09TP
  2. Bug 1405875 - Remove old dump/compare regression data methods on fram…

    dbaron committed Oct 5, 2017
    …es, and nsIFrameUtil interface and implementation. r=mats
    
    These became unused as a result of the removal of nsRegressionTester and
    the removal of the printing debug file mechanism, earlier in this patch
    sequence.
    
    MozReview-Commit-ID: 9Tftf2AjpPb
  3. Bug 1405875 - Remove now-unused nsIContentViewerFile interface. r=mats

    dbaron committed Oct 5, 2017
    This became unused as a result of the previous two patches, and the
    earlier removal of nsRegressionTester::DumpFrameModel.
    
    MozReview-Commit-ID: DoQ8C8XNCWW
  4. Bug 1405875 - Remove unneeded QueryInterface to nsIContentViewerFile.…

    dbaron committed Oct 5, 2017
    … r=mats
    
    nsDocumentViewer is the only implementation of both nsIContentViewer and
    of nsIContentViewerFile.
    
    This helps to make nsIContentViewerFile unused so that we can remove it
    later in this patch series.
    
    MozReview-Commit-ID: EgsgrXfTmx1
  5. Bug 1405875 - Remove unused contentViewerFile property from browser a…

    dbaron committed Oct 5, 2017
    …nd tabbrowser XBL bindings. r=Gijs
    
    This helps to make nsIContentViewerFile unused so that we can remove it
    later in this patch series.
    
    MozReview-Commit-ID: I0LvygpnCx8
  6. Bug 1405875 - Remove debug file mechanism from printing. r=mats

    dbaron committed Oct 5, 2017
    This was used only by nsRegressionTester::DumpFrameModel, which was
    removed in the previous patch.
    
    MozReview-Commit-ID: I8fS7vzlFQw
  7. Bug 1405875 - Remove regression testing backend from layout debugger.…

    dbaron committed Oct 5, 2017
    … r=mats
    
    This removes the C++ and IDL for the UI removed in the previous patch.
    
    MozReview-Commit-ID: bSkPnWopi9
  8. Bug 1405875 - Remove old regression testing UI from layout debugger. …

    dbaron committed Oct 5, 2017
    …r=mats
    
    The tests that were run using this UI were removed in bug 652192.  (They
    did before-patch vs. after-patch comparisons of frame dumps, and didn't
    actually have pass/fail state.)
    
    MozReview-Commit-ID: 5qoeaFpEyQg
Commits on Jul 20, 2017
  1. Bug 1381080 patch 7 - Mark nsLiteral[C]String constructor as constexp…

    dbaron committed Jul 20, 2017
    …r. r=erahm
    
    MozReview-Commit-ID: 5ASqQAGBqq
    
    --HG--
    extra : transplant_source : y%CB%BE%82%E7%E0%C9%2C%DE%26%1A%86%C8%17_%1E%A6E%9C%7B
  2. Bug 1381080 patch 4 - Assert that strings whose static type requires …

    dbaron committed Jul 20, 2017
    …a null-terminated buffer aren't assign a non-null-terminated buffer. r=erahm
    
    I actually couldn't figure out a way to trigger this assertion with the
    current string code without doing invalid casts, but there are things we
    may want to add to the string code in the future that might risk hitting
    this (e.g., move constructors, promoting various rebind methods to
    nsA[C]String), so I think it's worth asserting.
    
    MozReview-Commit-ID: 4R0dYuTfrFW
    
    --HG--
    extra : transplant_source : %B6%87I%0E%7F%21%CC2%19%CD%A7%E6TRA%9D%AEO%90%D7
  3. Bug 1381080 patch 3 - Encapsulate setting mData/mLength/mDataFlags in…

    dbaron committed Jul 20, 2017
    … a new method. r=erahm
    
    This is needed for patch 4.
    
    MozReview-Commit-ID: 4BFlTtQdtoN
    
    --HG--
    extra : transplant_source : %7C%F7%FDN%E5%7Df%0C%7D%10%EF%C0%25%B9%D6%18%1E%93%BE%A0
  4. Bug 1381080 patch 2 - Encapsulate setting to empty buffer in a new me…

    dbaron committed Jul 20, 2017
    …thod. r=erahm
    
    This is needed for patch 4.
    
    MozReview-Commit-ID: 7xKQv37cy5k
    
    --HG--
    extra : transplant_source : %ED%16%85q%7F%E7%117%29%D2c%C2%21%20%D7%C9%BA%CCC%CC
  5. Bug 1381080 patch 1 - Add ClassFlags::NULL_TERMINATED to strings that…

    dbaron committed Jul 20, 2017
    … require null-termination. r=erahm
    
    This is needed for patch 4.
    
    MozReview-Commit-ID: 5ikQFIL9O0i
    
    --HG--
    extra : transplant_source : %88%80%E3%04%11%7E%7F%A4%7E%15%1B%1A%84%E2%13%3E%F6%E8%2A%1C
Commits on Jul 13, 2017
  1. Backed out changeset 90ae2fcd089a (bug 1378727) for numerous xpcshell…

    dbaron committed Jul 13, 2017
    … test failures on Windows, starting with test_ext_browsingData_downloads.js.
  2. Bug 1308876 - Preserve behavior of ignoring parent dirty bit for colu…

    dbaron committed Jul 13, 2017
    …mn groups. r=dholbert
    
    In the existing code, the parent having NS_FRAME_IS_DIRTY is not
    propagated to column groups because nsTableFrame::ReflowColGroups checks
    the child dirty bit before constructing the reflow state for the child.
    This preserves that behavior in the presence of the primary patch in bug
    1308876.
    
    I noticed this while debugging the assertion count failure of
    layout/base/crashtests/470851-1.xhtml .  It doesn't help that failure,
    but it still seems like the safe thing to do.
    
    MozReview-Commit-ID: EhfIQQkeaJx
  3. Bug 1308876 - Mark child frames as dirty before starting reflow of th…

    dbaron committed Jul 13, 2017
    …e parent, so that if we reflow a child twice, it's only dirty the first time. r=dholbert
    
    This is the primary patch in this bug, and makes the performance
    improvement that fixes this bug.
    
    The assertion count increase for layout/generic/crashtests/1015844.html
    is accompanied by a layout change in the testcase as well.  However, I'm
    not planning to fix it in this sequence; fundamentally columnsets with
    specified heights inside a paginated context (like another columnset) do
    not work in any reasonable way, and changing the number of times we
    reflow them can change the layout.  At least, assuming I didn't lose
    something in the process of simplifying the testcase.
    
    ISSUES:
     - may make block inside XUL worse in performance by marking dirty more (see subdoc in Firefox UI, or text control innards?)
    
    MozReview-Commit-ID: GdOvPynqcFP
  4. Bug 1308876 - Avoid initiating special-height reflow as a result of n…

    dbaron committed Jul 13, 2017
    …ew paginated non-dirty reflows. r=dholbert
    
    Previously, in paginated mode, all reflows were dirty reflows, since
    tables do not split outside of printing, and prior to the primary patch
    in bug 1308876, all reflows during printing are dirty reflows.  (The
    isPaginated test here is actually for real pages, not fragmentation in
    general.  However, the use here is appropriate for the meaning of
    whether it's possible for the table to fragment.)
    
    The fact that all reflows were dirty reflows meant that the
    NS_FRAME_CONTAINS_RELATIVE_BSIZE flag was always cleared immediately
    before reflow in ReflowInput::InitResizeFlags (which might also have set
    the flag on *ancestors*).  This meant that, prior to the primary patch
    in bug 1308876, the initial value of needToInitiateSpecialReflow that
    was initialized from the presence of the
    NS_FRAME_CONTAINS_RELATIVE_BSIZE flag was always false.  This patch
    preserves that initialization in the presence of the change in the
    primary patch in bug 1308876.
    
    This caused a failure in a single test in our test suite, and in a
    rather complicated way.  The test was
    layout/base/crashtests/470851-1.xhtml, in which there was both a
    difference in assertion count (due to the bogus assertion "data loss -
    incomplete row needed more height than available, on top of page" in
    nsTableRowGroupFrame::SplitRowGroup, whose companion assertion "data
    loss - complete row needed more height than available, on top of page"
    is already just an NS_WARNING) that caused a test failure, and a
    difference in layout (the test split across 3 pages rather than 2) that
    did not cause a test failure.
    
    This patch fixes the difference in layout.  The immediate cause of the
    layout difference was that a cell (the second outermost) on the second
    page had a height, computed in CalcUnpaginatedBSize, that was large
    enough to cause it to need to continue onto the third page.  This height
    came (via nsTableRowFrame::GetUnpaginatedBSize) from the
    UnpaginatedHeightProperty stored on the first-in-flow of its row, on the
    first page, stored by CacheRowBSizesForPrinting called in
    nsTableRowGroupFrame::ReflowChildren during the reflow of its row group
    on the first page, in a special height reflow initiated during the
    second-pass constrained-height reflow of the table (still,
    second-outermost) on the first page, due to the change being fixed in
    this patch.
    
    MozReview-Commit-ID: 3E84VwdXuPs
  5. Bug 1308876 - Prevent tables from trying to do incremental reflow whe…

    dbaron committed Jul 13, 2017
    …n fragmented, since they can't. r=dholbert
    
    I noticed this while debugging the assertion count failure of
    layout/base/crashtests/470851-1.xhtml .  It doesn't help that failure,
    but it still seems like the safe thing to do.
    
    MozReview-Commit-ID: 6xHxUJCjUHh
  6. Bug 1308876 - Reflow all kids when column-fill is auto and height has…

    dbaron committed Jul 13, 2017
    … changed. r=dholbert
    
    This fixes the regression in
    layout/reftests/columns/column-balancing-nested-001.html from the
    primary patch in this bug, for which a simplified testcase is
    https://bugzilla.mozilla.org/attachment.cgi?id=8848293 .  I believe it's
    simply a pre-existing bug that wasn't previously exposed.  I suspect
    it may be possible to write a test that shows the bug prior to the
    patch.  However, it's difficult, since it requires triggering height
    changes in a multicol with an 'auto' height (since a non-'auto' height
    would cause the multicol to have NS_FRAME_CONTAINS_RELATIVE_BSIZE set by
    nsColumnSetFrame::Reflow, which would make skipIncremental false because
    ShouldReflowAllKids returns true).  I suspect any working testcase would
    likely be rather brittle, so I haven't pursued it further (particularly
    given the complexity of the minimal testcase).
    
    MozReview-Commit-ID: Gve3XKEPSxL
  7. Bug 1308876 - Fix ColumnSet to reflow a non-dirty column when the blo…

    dbaron committed Jul 13, 2017
    …ck-size has shrunk and the column might need to push some children to the next column. r=dholbert
    
    This fixes (confirmed by testing locally) a regression in
    layout/reftests/w3c-css/received/css-multicol-1/multicol-nested-margin-004.xht
    resulting from the primary patch in this bug, which tends to make frames
    dirty less often.  The problem with that test is that (at least in a
    simplified form), in the final reflow of the inner ColumnSet in the
    first column of the outer ColumnSet, the inner ColumnSet chooses not to
    reflow its first column, thus leaving that first column having a height
    that is too large for the inner ColumnSet to fit in the first column of
    the outer ColumnSet, causing the entire inner ColumnSet (rather than
    just part of it) to be pushed to the next column.
    
    I believe this existing incremental reflow code just doesn't make sense.
    The code I'm modifying dates back primarily to:
    c237520 (October 2004, initial columns implementation)
    ee070ec (March 2005)
    31e3540 (November 2006)
    
    The first thing that doesn't make sense is the condition modified at the
    end of this patch:
      (!reflowNext && (skipIncremental || skipResizeBSizeShrink))
    There's simply no reason that that || isn't required to be an &&, as far
    as I can tell.  Even if we don't need to reflow due to any of the
    standard incremental reflow conditions, we can need to reflow because
    the block size is shrinking and the column no longer fits.
    
    Note that things were already OK when we required reflow due to
    NS_SUBTREE_DIRTY(this), because of the way shrinkingBSizeOnly was
    initialized using !NS_SUBTREE_DIRTY(this), thus excluding such cases
    from the optimization.
    
    The rest of the patch falls out of turning the || into an && in an
    efficient way (i.e., without the extra !NS_SUBTREE_DIRTY(this) test, and
    avoiding doing extra tests that we know we're not going to need by
    coalescing all the incremental reflow tests into a single variable).
    
    I tested that this patch passes try on its own (on 64-bit Linux debug):
    https://treeherder.mozilla.org/#/jobs?repo=try&revision=a279023fb7e8f3349d5ecbfb95807d6b097cdbcb
    
    MozReview-Commit-ID: BD3ofmWN5Wl
  8. Bug 1308876 - Remove assertion that starts firing more when we mark f…

    dbaron committed Jul 13, 2017
    …rames dirty less and thus call PrepareResizeReflow more. r=mats
    
    This fires, for example, in layout/base/crashtests/265973-1.html (and a
    number of other tests, I believe) with the primary patch in this bug.
    This is because the primary patch causes frames to be dirty less often,
    which sends us into the PrepareResizeReflow codepath, which only happens
    when frames are not dirty.
    
    I don't think NS_CoordSaturatingAdd is needed here, since newAvailISize
    is used only when deciding whether or not lines need reflow; wraparound
    should only cause us to do a little extra work.
    
    Note: This patch passes try on its own, on Linux64 debug.
    
    MozReview-Commit-ID: K6Z5MvG7awp
  9. Bug 1308876 - Don't continue reflow after deciding we need to try aga…

    dbaron committed Jul 13, 2017
    …in due to page-break-inside:avoid. r=mats
    
    The primary patch in this bug causes fewer dirty reflows, which leads to lines
    being out-of-date for the reason described in the comment.  This causes
    incorrect layout of some references sections on wikipedia, for which a
    simplified testcase is included.
    
    This bug was not caught by anything in our test suite, but I noticed it
    while browsing wikipedia (since I use a build that has my patches in it
    for my regular browsing).
    
    MozReview-Commit-ID: 4hTQpGS2pZH
  10. Bug 1308876 - Mark lines dirty when we abort their reflow due to page…

    dbaron committed Jul 13, 2017
    …-break-inside:avoid. r=mats
    
    Both of the changes are needed to fix
    layout/reftests/w3c-css/submitted/css21/pagination/moz-css21-float-page-break-inside-avoid-4.html
    with the primary patch in bug 1308876.
    
    That patch changes the transfer of NS_FRAME_IS_DIRTY from parent to
    child so that it happens at the start of the parent's reflow rather than
    later at the start of the child's reflow, which means that frames that
    are pulled into a dirty frame during reflow are not marked dirty (and
    thus forced to reflow all of their lines).  This means that the primary
    patch in bug 1308876 introduces the possibility of non-dirty reflows
    during printing, which means we exercise non-dirty relayout code in a
    number of tests where we did not do so previously.
    
    Note: This patch passes try on its own, on Linux64 debug.
    
    Writing a simple test for this that fails without the primary patch in
    bug 1308876 seems difficult.  ColumnSetFrame responds to
    nsReflowStatus::NextInFlowNeedsReflow by marking the next-in-flow
    *dirty* (which page frames don't), which makes it hard to test in
    columns, at least without nesting.  (Colums probably shouldn't do that,
    though, but that's a performance fix for another time.)
    
    MozReview-Commit-ID: JZ3qWTSO2lX
  11. Bug 1380521 - Use a more reliably invalid initial mBSizeOfARow so tha…

    dbaron committed Jul 13, 2017
    …t we reflow properly if it changes to zero. r=dholbert
    
    This fixes a failure in layout/reftests/bugs/467084-1.html, triggered by
    the primary patch in bug 1308876, on Android only (or on all platforms
    if I add 'html { overflow: hidden }').
    
    I confirmed locally (on Linux) that, without this patch, both
    layout/reftests/bugs/467084-1.html with 'html { overflow: hidden }', and
    the reftest added here, fail, but that with the patch they both pass.
    
    MozReview-Commit-ID: 3SjTlnBngBV
  12. Bug 1380521 - Fix spelling of mSuppressScrollbarUpdate member variabl…

    dbaron committed Jul 13, 2017
    …e. r=dholbert
    
    MozReview-Commit-ID: 6i2cz2Flwtb
  13. Bug 1380521 - Remove pointless assertion. r=dholbert

    dbaron committed Jul 13, 2017
    It's just asserting the same as the test that contains it.
    
    MozReview-Commit-ID: KS58GuvVZDA
  14. Bug 1379334 - Make XULScrollFrame test for needing a vertical scrollb…

    dbaron committed Jul 13, 2017
    …ar because of the size of the horizontal scrollbar. r=dholbert
    
    This fixes an incremental layout bug, where the number of times we
    reflow the frame affects its layout.  This is because we make the
    decisions about the vertical scrollbar before the horizontal scrollbar
    (and, when making the decision, adjust mHelper.mScrollPort for the size
    of the scrollbar).  Thus, in order to avoid a situation where reflowing
    the scrollframe once leads us to have no vertical scrollbar, but
    reflowing it a second time leads us to add that scrollbar, we need to
    retest for the need for a vertical scrollbar after we add the horizontal
    one.
    
    (It's possible there are some other missing cases here, but this is the
    one that (a) already existed in the code and (b) is needed to fix the
    reftest failure on Windows that I got on bug 1308876, in
    layout/reftests/text-overflow/xulscroll.html .
    
    The reftest here shows the bug even without bug 1308876 (though I
    confirmed that only by loading the test and reference in a nightly
    build, not in the reftest harness).  I did test that, in combination
    with bug 1308876, the test fails without the patch and passes with the
    patch.
    
    MozReview-Commit-ID: LhMi7LbmB6J
  15. Bug 1379334 - Convert mis-indented code to 2-space indent, plus braci…

    dbaron committed Jul 13, 2017
    …ng and logical operator position fixes when reindenting. r=dholbert
    
    MozReview-Commit-ID: ElsSNF40LZQ
Commits on Jul 10, 2017
  1. Bug 1343715 - Remove nsA[C]String::SetDataFlags. r=dmajor

    dbaron committed Jul 10, 2017
    MozReview-Commit-ID: EDQbH9pZKtZ
    
    --HG--
    extra : transplant_source : %FA%16%DC%A2C%DAM%F8%AC9%B6%F3d%DF%9E%5B%80%99%7E%B3
  2. Bug 1343715 - Split nsTSubstring::mFlags into separate variables for …

    dbaron committed Jul 10, 2017
    …class and data flags (rust bindings changes). r=mystor
    
    Thanks to Manish for help in reflecting this idiomatically in rust.
    
    MozReview-Commit-ID: 8tB7vsc5yxc
    
    --HG--
    extra : transplant_source : F%87%16%82.P%BD%F3%B1%A4%19%BA%F0%3DQ%F6%ED%BD%95%60
  3. Bug 1343715 - Split nsTSubstring::mFlags into separate variables for …

    dbaron committed Jul 10, 2017
    …class and data flags. r=dmajor
    
    MozReview-Commit-ID: JW1p5BxpHKA
    
    --HG--
    extra : transplant_source : %20e%CF%FA%60%A2%1Bn%1A%C6%A2%DBAy%3C%E0b%0C%077
  4. Bug 1343715 - Use SetDataFlags in ForgetSharedBuffer. r=dmajor

    dbaron committed Jul 10, 2017
    I believe this should fix some incorrect clearing of F_CLASS_FIXED.
    
    MozReview-Commit-ID: 4ga2NEM9M5Z
    
    --HG--
    extra : transplant_source : %ECF%CF%D0%F6%19%9F%24%86%EFR%CAVZ%ED%60%D5nU%D8
Commits on Jul 7, 2017
  1. Bug 1377497 - Pass the correct writing mode to SizeComputationInput::…

    dbaron committed Jul 7, 2017
    …DisplayInitOffsetsEnter. r=jfkthame
    
    This avoids asserting when the writing mode doesn't correspond to the
    one stored (DEBUG-only) in aPercentBasis.
    
    MozReview-Commit-ID: KKqms9X17SS
  2. Bug 1377497 - Pass the correct writing mode to SizeComputationInput::…

    dbaron committed Jul 7, 2017
    …DisplayInitOffsetsEnter. r=jfkthame
    
    This avoids asserting when the writing mode doesn't correspond to the
    one stored (DEBUG-only) in aPercentBasis.
    
    MozReview-Commit-ID: KKqms9X17SS
    
    --HG--
    extra : transplant_source : %0Eh%09F%17%15%0D%D1%D3%DA%9B%85%21z%ED%3Dx%EA%F9%E8