{"push_id":766258827,"size":1,"distinct_size":1,"ref":"refs/heads/master","head":"bb5572c1de7405160a32b80c6224477b13eaac14","before":"f331d74f6bdd952f2a6de34bf0d932bdaf0a637f","commits":[{"sha":"bb5572c1de7405160a32b80c6224477b13eaac14","author":{"email":"9474dd4e7c7f8368f321b068328d92e98d7db189@opera.com","name":"rune@opera.com"},"message":"Implement proposed shadow tree cascade order.\n\nThis CL implements the shadow tree cascade order proposed in [1].\n\nPreviously, in Blink, specificity would win over scope origin, even if the\nscopes had an inner/outer scope relationship, and the order-of-appearance\nwas governed by the CascadeOrder type. Also, !important rules did not\napply in the reverse scope order, as the current spec says for inner/outer\nscopes, and the proposal in [1] says apply between all shadow scopes.\n\nWhat has been done is:\n\n1. CascadeOrder is not used, as it represents order-of-appearance\n   (Removal of CascadeOrder is not done here to make the CL smaller. Will\n   be removed in a follow-up CL).\n\n2. When collecting rules, sort after each scope instead of just after UA\n   and Author since we had:\n\n   UA important\n   Author important\n   Author\n   UA\n\n   and now we have (with A(n) appearing before A(n+1) in the tree-of-trees\n   order):\n\n   UA important\n   Author scope A(n) important\n   ...\n   Author scope A(1) important\n   Author scope A(1)\n   ...\n   Author scope A(n)\n   UA\n\n   The applyProperties code is hot, and I have made performance runs for\n   the micro-benchmarks in Layout and CSS without consistent regressions.\n\n3. Since the cascading order between scopes are just the inner/outer\n   relationship in the composed tree (direction decided by !important),\n   which is the same as the tree-of-trees order of the shadow trees,\n   we can just traverse the DocumentOrderedList of scopes in the reverse\n   order instead of doing calculation tricks for CascadeOrder values.\n\n   Because of this, TreeBoundaryCrossingRules is now reduced to a\n   DocumentOrderedList of scoping nodes, so the TreeBoundaryCrossingRules\n   class is removed.\n\n[1] https://lists.w3.org/Archives/Public/www-style/2015Jun/0303.html\n\nBUG=452542, 455148, 487125\n\nNOTRY=true\n\nReview URL: https://codereview.chromium.org/1298173004\n\ngit-svn-id: svn://svn.chromium.org/blink/trunk@200994 bbb929c8-8fbe-4397-9dbb-9b2b20218538","distinct":true,"url":"https://api.github.com/repos/dstockwell/blink/commits/bb5572c1de7405160a32b80c6224477b13eaac14"}]}