Browse Source

Merge branch '7.1' into testbench4

Conflicts:
	publish.xml

Change-Id: Ic8187a44ac731a930921a6ddcbe0f7eb07deef7e
tags/7.2.0.beta1
Henri Sara 10 years ago
parent
commit
9885b8c7d7
35 changed files with 13183 additions and 14502 deletions
  1. 2
    0
      WebContent/VAADIN/themes/base/base.scss
  2. 7
    0
      WebContent/VAADIN/themes/base/browserframe/browserframe.scss
  3. 128
    0
      WebContent/statictestfiles/long-html.htm
  4. 16
    0
      client/src/com/vaadin/client/BrowserInfo.java
  5. 0
    51
      client/src/com/vaadin/client/Util.java
  6. 0
    2
      client/src/com/vaadin/client/ui/VPanel.java
  7. 2
    2
      client/src/com/vaadin/client/ui/VScrollTable.java
  8. 0
    3
      client/src/com/vaadin/client/ui/VUI.java
  9. 41
    5
      client/src/com/vaadin/client/ui/VWindow.java
  10. 12
    10
      client/src/com/vaadin/client/ui/ui/UIConnector.java
  11. 0
    3
      publish.xml
  12. 14
    2
      server/src/com/vaadin/server/communication/PushHandler.java
  13. 2
    2
      server/src/com/vaadin/ui/TreeTable.java
  14. 15
    0
      server/tests/src/com/vaadin/tests/server/component/treetable/TreeTableSetContainerNull.java
  15. 15
    0
      theme-compiler/apache2header.txt
  16. 25
    3
      theme-compiler/build.xml
  17. 3
    2
      theme-compiler/src/com/vaadin/sass/internal/handler/SCSSDocumentHandler.java
  18. 4
    3
      theme-compiler/src/com/vaadin/sass/internal/handler/SCSSDocumentHandlerImpl.java
  19. 13
    0
      theme-compiler/src/com/vaadin/sass/internal/parser/LexicalUnitImpl.java
  20. 7430
    8223
      theme-compiler/src/com/vaadin/sass/internal/parser/Parser.java
  21. 9
    7
      theme-compiler/src/com/vaadin/sass/internal/parser/Parser.jj
  22. 366
    267
      theme-compiler/src/com/vaadin/sass/internal/parser/ParserConstants.java
  23. 4951
    5913
      theme-compiler/src/com/vaadin/sass/internal/parser/ParserTokenManager.java
  24. 2
    1
      theme-compiler/src/com/vaadin/sass/internal/tree/BlockNode.java
  25. 2
    1
      theme-compiler/src/com/vaadin/sass/internal/tree/KeyframesNode.java
  26. 3
    2
      theme-compiler/src/com/vaadin/sass/internal/tree/RuleNode.java
  27. 9
    0
      theme-compiler/tests/resources/automatic/css/fontface-in-mixin_new.css
  28. 1
    0
      theme-compiler/tests/resources/automatic/css/interpolation-singlequote.css
  29. 10
    0
      theme-compiler/tests/resources/automatic/css/mixin-keyframes.css
  30. 17
    0
      theme-compiler/tests/resources/automatic/scss/fontface-in-mixin_new.scss
  31. 7
    0
      theme-compiler/tests/resources/automatic/scss/interpolation-singlequote.scss
  32. 14
    0
      theme-compiler/tests/resources/automatic/scss/mixin-keyframes.scss
  33. 8
    0
      uitest/integration_tests.xml
  34. 40
    0
      uitest/src/com/vaadin/tests/components/browserframe/BrowserFrameDoubleScrollbars.java
  35. 15
    0
      uitest/src/com/vaadin/tests/components/browserframe/BrowserFrameDoubleScrollbarsTest.java

+ 2
- 0
WebContent/VAADIN/themes/base/base.scss View File

@@ -39,6 +39,7 @@
@import "widget/widget.scss";
@import "window/window.scss";
@import "debug/debug.scss";
@import "browserframe/browserframe.scss";

.v-vaadin-version:after {
content: "@version@";
@@ -64,6 +65,7 @@ $line-height: normal;
@include base-absolutelayout;
@include base-accordion;
@include base-browserframe;
@include base-button;
@include base-nativebutton;
@include base-checkbox;

+ 7
- 0
WebContent/VAADIN/themes/base/browserframe/browserframe.scss View File

@@ -0,0 +1,7 @@
@mixin base-browserframe {

/* Removes duplicate scrollbars in some cases */
.v-browserframe {
font-size: 0;
}
}

+ 128
- 0
WebContent/statictestfiles/long-html.htm View File

@@ -0,0 +1,128 @@
<!DOCTYPE html>
<html lang="en">
<body>
<p>
Bacon ipsum dolor sit amet leberkas tri-tip bacon, shank frankfurter kevin tongue. Minim voluptate drumstick ham ullamco. Dolore t-bone capicola tongue shankle eu adipisicing enim tri-tip. Doner shank in cillum enim qui ham hock in anim cow ham laborum prosciutto minim. Brisket ad jowl, ground round id irure in tenderloin pariatur tongue strip steak exercitation magna aliquip. Exercitation labore dolore kevin anim frankfurter.
</p><p>
Ea veniam beef ribs jerky andouille. Beef short ribs reprehenderit bacon eiusmod sunt. Aliqua bacon proident brisket. Proident irure flank pork loin excepteur pork cillum incididunt pig ad laborum velit do dolor. Incididunt non filet mignon duis, eiusmod bacon beef esse tenderloin biltong fatback adipisicing sausage ham hock. Labore dolor occaecat nulla ea pariatur quis qui. Ad ut short ribs, doner incididunt bresaola aliqua mollit veniam jowl et biltong frankfurter sed nostrud.
</p><p>
Quis nulla tri-tip veniam, sint mollit fugiat shank frankfurter pariatur minim. Aute est ut enim pig, chicken in cillum prosciutto. Meatloaf pork chop aute, hamburger adipisicing pig exercitation qui eu irure jowl shankle flank ad sirloin. Culpa pancetta ball tip duis meatball swine turkey ullamco tongue in ut excepteur veniam sausage boudin. Laborum eiusmod mollit sed tempor velit ex in tenderloin meatloaf bresaola elit ut shank consequat. Sirloin pancetta in aliqua kielbasa.
</p><p>
Officia short ribs doner elit id t-bone shank venison reprehenderit jowl deserunt ut. Ham hock dolore venison, pork chop boudin dolore strip steak eiusmod sunt mollit beef ribs hamburger sint irure. Brisket laboris strip steak boudin velit cillum jowl occaecat veniam ullamco swine eiusmod duis mollit ut. Exercitation chicken tongue minim cupidatat in, ut in drumstick boudin meatball. Chuck pancetta spare ribs meatball velit filet mignon. Eiusmod jowl reprehenderit jerky, est turducken kevin pork belly anim drumstick ut aliqua rump.
</p><p>
Esse meatloaf sint elit exercitation, sunt ex turkey andouille capicola sausage beef. Exercitation pancetta corned beef enim officia andouille, laboris ea tempor filet mignon. Pork excepteur incididunt, mollit do exercitation t-bone. Tempor in irure laborum. Anim in laborum, brisket enim beef short ribs. Ut corned beef deserunt dolore occaecat andouille swine shankle short loin meatloaf pig beef ribs sint.
</p><p>
Reprehenderit exercitation meatball sausage laborum. Kevin rump bacon, labore turkey ad elit officia dolore ex ut. Pork loin brisket spare ribs deserunt consectetur sint pancetta ribeye ham hock sausage anim laborum meatloaf. Quis id salami frankfurter. Aliquip ground round tenderloin jerky.
</p><p>
Enim aute leberkas nulla, dolor prosciutto meatball. Shankle turkey irure ut pork loin, pork chop fugiat minim. Turkey shank leberkas incididunt ut, venison dolor in swine rump. Ground round nostrud incididunt, shank filet mignon shankle tail sunt proident rump. In duis quis tongue nulla tempor cillum capicola sausage. Short ribs leberkas prosciutto sirloin enim anim veniam tri-tip.
</p><p>
Occaecat pork loin ad in, commodo chicken chuck dolor ex kielbasa. Pariatur rump consequat short loin turducken cow. Pancetta turkey shank eiusmod consectetur aute. Consectetur shoulder short ribs, velit frankfurter officia swine. Flank leberkas sausage drumstick. Aute do non short ribs sirloin meatloaf, et consequat. Mollit aute meatloaf ut shoulder consectetur.
</p><p>
Sausage hamburger aliquip kevin turducken. Nostrud irure id est. Capicola beef ribs prosciutto, shank exercitation t-bone ex andouille. Enim short loin shoulder, pork loin ut tongue tempor doner. Boudin tongue beef venison dolor, nostrud sausage corned beef dolore ut spare ribs. Magna kielbasa beef ham ut shoulder fugiat frankfurter esse doner aliquip voluptate in non. Pork belly adipisicing culpa, quis short loin drumstick ut sed sirloin minim pancetta fatback id jerky ham.
</p><p>
Cupidatat spare ribs officia turkey. Kielbasa pork chop fugiat flank. Id boudin ground round aute pancetta sausage quis frankfurter fatback andouille salami sunt magna voluptate short ribs. Shankle pastrami pancetta laborum ex kielbasa short ribs venison est consequat in. Andouille sausage quis velit. In culpa turkey hamburger incididunt occaecat est esse meatball nostrud kielbasa in jowl. Capicola dolore labore pork loin cow nisi, reprehenderit tempor.
</p><p>
Kielbasa spare ribs tail, esse aliqua elit tri-tip pork belly tenderloin duis consequat. Voluptate laborum cupidatat boudin shoulder pig. Pariatur fatback doner drumstick in dolor. Laborum tail chuck veniam, dolore short ribs eiusmod. Incididunt eu quis, pastrami ea excepteur enim pork belly.
</p><p>
Exercitation proident ullamco chuck shank ut dolore fugiat. Jowl ut reprehenderit ham hock short loin boudin. Capicola fugiat commodo laboris tail voluptate dolore chicken sirloin pastrami biltong andouille. Spare ribs consectetur sausage chuck frankfurter aute proident magna tenderloin minim.
</p><p>
Andouille dolor ad, hamburger anim do shank adipisicing corned beef leberkas dolore pancetta bresaola. In meatloaf sint beef. Pork chop eiusmod cupidatat, t-bone culpa chuck fatback brisket. Dolore rump eiusmod quis, labore ribeye doner strip steak boudin ex pariatur brisket.
</p><p>
Pastrami reprehenderit elit sirloin. Adipisicing cillum labore enim chuck, jowl consequat ex beef laborum esse ullamco anim. Elit tenderloin reprehenderit nostrud tail. Shank meatloaf irure, tempor enim pork belly beef pork chop proident.
</p><p>
Sint aliqua doner biltong aliquip short loin ad id ut short ribs. Jerky officia esse ribeye venison t-bone. Bresaola dolor ham, boudin meatloaf rump culpa in sed ut do exercitation short ribs minim irure. Filet mignon frankfurter chuck turducken ut chicken ea. Sirloin labore pastrami ham hock pork belly dolore pork chop proident eu ea flank turducken cupidatat rump salami. Tongue commodo et, doner mollit ea duis pork chop turducken culpa.
</p><p>
Pariatur ex spare ribs jerky pork loin short ribs. Do meatloaf in qui sed adipisicing pig chicken tempor commodo ex boudin laborum tongue. Jerky laboris dolor tongue ribeye, salami aute commodo deserunt. Nulla tri-tip tempor, in turkey sint labore occaecat. Ex sed chicken qui, in pork loin beef ribs eiusmod sunt. Prosciutto corned beef short ribs consequat mollit, sed sunt strip steak nulla esse fatback sausage. Chicken culpa incididunt duis do cow frankfurter.
</p><p>
Prosciutto duis irure rump sunt. Kielbasa jerky dolore non biltong nisi esse dolor turkey elit nostrud aliqua tempor. Dolor in chicken, pork cupidatat kielbasa enim veniam. Sausage ut jowl fatback. Andouille t-bone non corned beef pork chop enim. Minim sirloin voluptate pastrami pork loin shankle.
</p><p>
Sirloin labore consectetur drumstick qui ut turducken pariatur boudin leberkas. Aliqua andouille ball tip jerky leberkas qui, doner nostrud cow adipisicing ham hock voluptate irure. Ham sirloin ham hock boudin ut sint. Exercitation ball tip velit fugiat leberkas.
</p><p>
Do pork cow, elit aliquip in beef ribs. Boudin bacon minim laborum, eiusmod drumstick frankfurter aute exercitation rump adipisicing andouille. Meatloaf esse ribeye dolore ad, cow beef flank frankfurter et sed deserunt ground round. Prosciutto ex pariatur short ribs non. Tongue shank sirloin qui incididunt commodo laborum venison corned beef pariatur. Dolore culpa turducken leberkas, eu sunt kevin.
</p><p>
Capicola dolor rump, non consectetur reprehenderit qui laborum pariatur aute cow swine. Ball tip pork belly elit jowl t-bone. Nisi ex in ullamco ad nostrud frankfurter proident et eu sausage. T-bone beef ribs pancetta voluptate rump ut irure minim pork chop consequat short ribs dolor occaecat id cow.
</p>
<p>
Bacon ipsum dolor sit amet leberkas tri-tip bacon, shank frankfurter kevin tongue. Minim voluptate drumstick ham ullamco. Dolore t-bone capicola tongue shankle eu adipisicing enim tri-tip. Doner shank in cillum enim qui ham hock in anim cow ham laborum prosciutto minim. Brisket ad jowl, ground round id irure in tenderloin pariatur tongue strip steak exercitation magna aliquip. Exercitation labore dolore kevin anim frankfurter.
</p><p>
Ea veniam beef ribs jerky andouille. Beef short ribs reprehenderit bacon eiusmod sunt. Aliqua bacon proident brisket. Proident irure flank pork loin excepteur pork cillum incididunt pig ad laborum velit do dolor. Incididunt non filet mignon duis, eiusmod bacon beef esse tenderloin biltong fatback adipisicing sausage ham hock. Labore dolor occaecat nulla ea pariatur quis qui. Ad ut short ribs, doner incididunt bresaola aliqua mollit veniam jowl et biltong frankfurter sed nostrud.
</p><p>
Quis nulla tri-tip veniam, sint mollit fugiat shank frankfurter pariatur minim. Aute est ut enim pig, chicken in cillum prosciutto. Meatloaf pork chop aute, hamburger adipisicing pig exercitation qui eu irure jowl shankle flank ad sirloin. Culpa pancetta ball tip duis meatball swine turkey ullamco tongue in ut excepteur veniam sausage boudin. Laborum eiusmod mollit sed tempor velit ex in tenderloin meatloaf bresaola elit ut shank consequat. Sirloin pancetta in aliqua kielbasa.
</p><p>
Officia short ribs doner elit id t-bone shank venison reprehenderit jowl deserunt ut. Ham hock dolore venison, pork chop boudin dolore strip steak eiusmod sunt mollit beef ribs hamburger sint irure. Brisket laboris strip steak boudin velit cillum jowl occaecat veniam ullamco swine eiusmod duis mollit ut. Exercitation chicken tongue minim cupidatat in, ut in drumstick boudin meatball. Chuck pancetta spare ribs meatball velit filet mignon. Eiusmod jowl reprehenderit jerky, est turducken kevin pork belly anim drumstick ut aliqua rump.
</p><p>
Esse meatloaf sint elit exercitation, sunt ex turkey andouille capicola sausage beef. Exercitation pancetta corned beef enim officia andouille, laboris ea tempor filet mignon. Pork excepteur incididunt, mollit do exercitation t-bone. Tempor in irure laborum. Anim in laborum, brisket enim beef short ribs. Ut corned beef deserunt dolore occaecat andouille swine shankle short loin meatloaf pig beef ribs sint.
</p><p>
Reprehenderit exercitation meatball sausage laborum. Kevin rump bacon, labore turkey ad elit officia dolore ex ut. Pork loin brisket spare ribs deserunt consectetur sint pancetta ribeye ham hock sausage anim laborum meatloaf. Quis id salami frankfurter. Aliquip ground round tenderloin jerky.
</p><p>
Enim aute leberkas nulla, dolor prosciutto meatball. Shankle turkey irure ut pork loin, pork chop fugiat minim. Turkey shank leberkas incididunt ut, venison dolor in swine rump. Ground round nostrud incididunt, shank filet mignon shankle tail sunt proident rump. In duis quis tongue nulla tempor cillum capicola sausage. Short ribs leberkas prosciutto sirloin enim anim veniam tri-tip.
</p><p>
Occaecat pork loin ad in, commodo chicken chuck dolor ex kielbasa. Pariatur rump consequat short loin turducken cow. Pancetta turkey shank eiusmod consectetur aute. Consectetur shoulder short ribs, velit frankfurter officia swine. Flank leberkas sausage drumstick. Aute do non short ribs sirloin meatloaf, et consequat. Mollit aute meatloaf ut shoulder consectetur.
</p><p>
Sausage hamburger aliquip kevin turducken. Nostrud irure id est. Capicola beef ribs prosciutto, shank exercitation t-bone ex andouille. Enim short loin shoulder, pork loin ut tongue tempor doner. Boudin tongue beef venison dolor, nostrud sausage corned beef dolore ut spare ribs. Magna kielbasa beef ham ut shoulder fugiat frankfurter esse doner aliquip voluptate in non. Pork belly adipisicing culpa, quis short loin drumstick ut sed sirloin minim pancetta fatback id jerky ham.
</p><p>
Cupidatat spare ribs officia turkey. Kielbasa pork chop fugiat flank. Id boudin ground round aute pancetta sausage quis frankfurter fatback andouille salami sunt magna voluptate short ribs. Shankle pastrami pancetta laborum ex kielbasa short ribs venison est consequat in. Andouille sausage quis velit. In culpa turkey hamburger incididunt occaecat est esse meatball nostrud kielbasa in jowl. Capicola dolore labore pork loin cow nisi, reprehenderit tempor.
</p><p>
Kielbasa spare ribs tail, esse aliqua elit tri-tip pork belly tenderloin duis consequat. Voluptate laborum cupidatat boudin shoulder pig. Pariatur fatback doner drumstick in dolor. Laborum tail chuck veniam, dolore short ribs eiusmod. Incididunt eu quis, pastrami ea excepteur enim pork belly.
</p><p>
Exercitation proident ullamco chuck shank ut dolore fugiat. Jowl ut reprehenderit ham hock short loin boudin. Capicola fugiat commodo laboris tail voluptate dolore chicken sirloin pastrami biltong andouille. Spare ribs consectetur sausage chuck frankfurter aute proident magna tenderloin minim.
</p><p>
Andouille dolor ad, hamburger anim do shank adipisicing corned beef leberkas dolore pancetta bresaola. In meatloaf sint beef. Pork chop eiusmod cupidatat, t-bone culpa chuck fatback brisket. Dolore rump eiusmod quis, labore ribeye doner strip steak boudin ex pariatur brisket.
</p><p>
Pastrami reprehenderit elit sirloin. Adipisicing cillum labore enim chuck, jowl consequat ex beef laborum esse ullamco anim. Elit tenderloin reprehenderit nostrud tail. Shank meatloaf irure, tempor enim pork belly beef pork chop proident.
</p><p>
Sint aliqua doner biltong aliquip short loin ad id ut short ribs. Jerky officia esse ribeye venison t-bone. Bresaola dolor ham, boudin meatloaf rump culpa in sed ut do exercitation short ribs minim irure. Filet mignon frankfurter chuck turducken ut chicken ea. Sirloin labore pastrami ham hock pork belly dolore pork chop proident eu ea flank turducken cupidatat rump salami. Tongue commodo et, doner mollit ea duis pork chop turducken culpa.
</p><p>
Pariatur ex spare ribs jerky pork loin short ribs. Do meatloaf in qui sed adipisicing pig chicken tempor commodo ex boudin laborum tongue. Jerky laboris dolor tongue ribeye, salami aute commodo deserunt. Nulla tri-tip tempor, in turkey sint labore occaecat. Ex sed chicken qui, in pork loin beef ribs eiusmod sunt. Prosciutto corned beef short ribs consequat mollit, sed sunt strip steak nulla esse fatback sausage. Chicken culpa incididunt duis do cow frankfurter.
</p><p>
Prosciutto duis irure rump sunt. Kielbasa jerky dolore non biltong nisi esse dolor turkey elit nostrud aliqua tempor. Dolor in chicken, pork cupidatat kielbasa enim veniam. Sausage ut jowl fatback. Andouille t-bone non corned beef pork chop enim. Minim sirloin voluptate pastrami pork loin shankle.
</p><p>
Sirloin labore consectetur drumstick qui ut turducken pariatur boudin leberkas. Aliqua andouille ball tip jerky leberkas qui, doner nostrud cow adipisicing ham hock voluptate irure. Ham sirloin ham hock boudin ut sint. Exercitation ball tip velit fugiat leberkas.
</p><p>
Do pork cow, elit aliquip in beef ribs. Boudin bacon minim laborum, eiusmod drumstick frankfurter aute exercitation rump adipisicing andouille. Meatloaf esse ribeye dolore ad, cow beef flank frankfurter et sed deserunt ground round. Prosciutto ex pariatur short ribs non. Tongue shank sirloin qui incididunt commodo laborum venison corned beef pariatur. Dolore culpa turducken leberkas, eu sunt kevin.
</p><p>
Capicola dolor rump, non consectetur reprehenderit qui laborum pariatur aute cow swine. Ball tip pork belly elit jowl t-bone. Nisi ex in ullamco ad nostrud frankfurter proident et eu sausage. T-bone beef ribs pancetta voluptate rump ut irure minim pork chop consequat short ribs dolor occaecat id cow.
</p>
<p>
Bacon ipsum dolor sit amet leberkas tri-tip bacon, shank frankfurter kevin tongue. Minim voluptate drumstick ham ullamco. Dolore t-bone capicola tongue shankle eu adipisicing enim tri-tip. Doner shank in cillum enim qui ham hock in anim cow ham laborum prosciutto minim. Brisket ad jowl, ground round id irure in tenderloin pariatur tongue strip steak exercitation magna aliquip. Exercitation labore dolore kevin anim frankfurter.
</p><p>
Ea veniam beef ribs jerky andouille. Beef short ribs reprehenderit bacon eiusmod sunt. Aliqua bacon proident brisket. Proident irure flank pork loin excepteur pork cillum incididunt pig ad laborum velit do dolor. Incididunt non filet mignon duis, eiusmod bacon beef esse tenderloin biltong fatback adipisicing sausage ham hock. Labore dolor occaecat nulla ea pariatur quis qui. Ad ut short ribs, doner incididunt bresaola aliqua mollit veniam jowl et biltong frankfurter sed nostrud.
</p><p>
Quis nulla tri-tip veniam, sint mollit fugiat shank frankfurter pariatur minim. Aute est ut enim pig, chicken in cillum prosciutto. Meatloaf pork chop aute, hamburger adipisicing pig exercitation qui eu irure jowl shankle flank ad sirloin. Culpa pancetta ball tip duis meatball swine turkey ullamco tongue in ut excepteur veniam sausage boudin. Laborum eiusmod mollit sed tempor velit ex in tenderloin meatloaf bresaola elit ut shank consequat. Sirloin pancetta in aliqua kielbasa.
</p><p>
Officia short ribs doner elit id t-bone shank venison reprehenderit jowl deserunt ut. Ham hock dolore venison, pork chop boudin dolore strip steak eiusmod sunt mollit beef ribs hamburger sint irure. Brisket laboris strip steak boudin velit cillum jowl occaecat veniam ullamco swine eiusmod duis mollit ut. Exercitation chicken tongue minim cupidatat in, ut in drumstick boudin meatball. Chuck pancetta spare ribs meatball velit filet mignon. Eiusmod jowl reprehenderit jerky, est turducken kevin pork belly anim drumstick ut aliqua rump.
</p><p>
Esse meatloaf sint elit exercitation, sunt ex turkey andouille capicola sausage beef. Exercitation pancetta corned beef enim officia andouille, laboris ea tempor filet mignon. Pork excepteur incididunt, mollit do exercitation t-bone. Tempor in irure laborum. Anim in laborum, brisket enim beef short ribs. Ut corned beef deserunt dolore occaecat andouille swine shankle short loin meatloaf pig beef ribs sint.
</p><p>
Reprehenderit exercitation meatball sausage laborum. Kevin rump bacon, labore turkey ad elit officia dolore ex ut. Pork loin brisket spare ribs deserunt consectetur sint pancetta ribeye ham hock sausage anim laborum meatloaf. Quis id salami frankfurter. Aliquip ground round tenderloin jerky.
</p><p>
Enim aute leberkas nulla, dolor prosciutto meatball. Shankle turkey irure ut pork loin, pork chop fugiat minim. Turkey shank leberkas incididunt ut, venison dolor in swine rump. Ground round nostrud incididunt, shank filet mignon shankle tail sunt proident rump. In duis quis tongue nulla tempor cillum capicola sausage. Short ribs leberkas prosciutto sirloin enim anim veniam tri-tip.
</p><p>
Occaecat pork loin ad in, commodo chicken chuck dolor ex kielbasa. Pariatur rump consequat short loin turducken cow. Pancetta turkey shank eiusmod consectetur aute. Consectetur shoulder short ribs, velit frankfurter officia swine. Flank leberkas sausage drumstick. Aute do non short ribs sirloin meatloaf, et consequat. Mollit aute meatloaf ut shoulder consectetur.
</p><p>
Sausage hamburger aliquip kevin turducken. Nostrud irure id est. Capicola beef ribs prosciutto, shank exercitation t-bone ex andouille. Enim short loin shoulder, pork loin ut tongue tempor doner. Boudin tongue beef venison dolor, nostrud sausage corned beef dolore ut spare ribs. Magna kielbasa beef ham ut shoulder fugiat frankfurter esse doner aliquip voluptate in non. Pork belly adipisicing culpa, quis short loin drumstick ut sed sirloin minim pancetta fatback id jerky ham.
</p><p>
Cupidatat spare ribs officia turkey. Kielbasa pork chop fugiat flank. Id boudin ground round aute pancetta sausage quis frankfurter fatback andouille salami sunt magna voluptate short ribs. Shankle pastrami pancetta laborum ex kielbasa short ribs venison est consequat in. Andouille sausage quis velit. In culpa turkey hamburger incididunt occaecat est esse meatball nostrud kielbasa in jowl. Capicola dolore labore pork loin cow nisi, reprehenderit tempor.
</p><p>
Kielbasa spare ribs tail, esse aliqua elit tri-tip pork belly tenderloin duis consequat. Voluptate laborum cupidatat boudin shoulder pig. Pariatur fatback doner drumstick in dolor. Laborum tail chuck veniam, dolore short ribs eiusmod. Incididunt eu quis, pastrami ea excepteur enim pork belly.
</p><p>
Exercitation proident ullamco chuck shank ut dolore fugiat. Jowl ut reprehenderit ham hock short loin boudin. Capicola fugiat commodo laboris tail voluptate dolore chicken sirloin pastrami biltong andouille. Spare ribs consectetur sausage chuck frankfurter aute proident magna tenderloin minim.
</p><p>
Andouille dolor ad, hamburger anim do shank adipisicing corned beef leberkas dolore pancetta bresaola. In meatloaf sint beef. Pork chop eiusmod cupidatat, t-bone culpa chuck fatback brisket. Dolore rump eiusmod quis, labore ribeye doner strip steak boudin ex pariatur brisket.
</p><p>
Pastrami reprehenderit elit sirloin. Adipisicing cillum labore enim chuck, jowl consequat ex beef laborum esse ullamco anim. Elit tenderloin reprehenderit nostrud tail. Shank meatloaf irure, tempor enim pork belly beef pork chop proident.
</p><p>
Sint aliqua doner biltong aliquip short loin ad id ut short ribs. Jerky officia esse ribeye venison t-bone. Bresaola dolor ham, boudin meatloaf rump culpa in sed ut do exercitation short ribs minim irure. Filet mignon frankfurter chuck turducken ut chicken ea. Sirloin labore pastrami ham hock pork belly dolore pork chop proident eu ea flank turducken cupidatat rump salami. Tongue commodo et, doner mollit ea duis pork chop turducken culpa.
</p><p>
Pariatur ex spare ribs jerky pork loin short ribs. Do meatloaf in qui sed adipisicing pig chicken tempor commodo ex boudin laborum tongue. Jerky laboris dolor tongue ribeye, salami aute commodo deserunt. Nulla tri-tip tempor, in turkey sint labore occaecat. Ex sed chicken qui, in pork loin beef ribs eiusmod sunt. Prosciutto corned beef short ribs consequat mollit, sed sunt strip steak nulla esse fatback sausage. Chicken culpa incididunt duis do cow frankfurter.
</p><p>
Prosciutto duis irure rump sunt. Kielbasa jerky dolore non biltong nisi esse dolor turkey elit nostrud aliqua tempor. Dolor in chicken, pork cupidatat kielbasa enim veniam. Sausage ut jowl fatback. Andouille t-bone non corned beef pork chop enim. Minim sirloin voluptate pastrami pork loin shankle.
</p><p>
Sirloin labore consectetur drumstick qui ut turducken pariatur boudin leberkas. Aliqua andouille ball tip jerky leberkas qui, doner nostrud cow adipisicing ham hock voluptate irure. Ham sirloin ham hock boudin ut sint. Exercitation ball tip velit fugiat leberkas.
</p><p>
Do pork cow, elit aliquip in beef ribs. Boudin bacon minim laborum, eiusmod drumstick frankfurter aute exercitation rump adipisicing andouille. Meatloaf esse ribeye dolore ad, cow beef flank frankfurter et sed deserunt ground round. Prosciutto ex pariatur short ribs non. Tongue shank sirloin qui incididunt commodo laborum venison corned beef pariatur. Dolore culpa turducken leberkas, eu sunt kevin.
</p><p>
Capicola dolor rump, non consectetur reprehenderit qui laborum pariatur aute cow swine. Ball tip pork belly elit jowl t-bone. Nisi ex in ullamco ad nostrud frankfurter proident et eu sausage. T-bone beef ribs pancetta voluptate rump ut irure minim pork chop consequat short ribs dolor occaecat id cow.
</p>
</body>
</html>

+ 16
- 0
client/src/com/vaadin/client/BrowserInfo.java View File

@@ -346,6 +346,22 @@ public class BrowserInfo {
&& Util.getNativeScrollbarSize() > 0;
}

/**
* Indicates whether the browser might require juggling to properly update
* sizes inside elements with overflow: auto when adjusting absolutely
* positioned elements.
* <p>
* See https://bugs.webkit.org/show_bug.cgi?id=123958 and
* http://code.google.com/p/chromium/issues/detail?id=316549
*
* @since 7.1.8
* @return <code>true</code> if the browser requires the workaround,
* otherwise <code>false</code>
*/
public boolean requiresPositionAbsoluteOverflowAutoFix() {
return (getWebkitVersion() > 0) && Util.getNativeScrollbarSize() > 0;
}

/**
* Checks if the browser is run on iOS
*

+ 0
- 51
client/src/com/vaadin/client/Util.java View File

@@ -32,7 +32,6 @@ import com.google.gwt.dom.client.Node;
import com.google.gwt.dom.client.NodeList;
import com.google.gwt.dom.client.Style;
import com.google.gwt.dom.client.Style.Display;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.dom.client.Touch;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DOM;
@@ -555,56 +554,6 @@ public class Util {

}

/**
* Prevents some browsers from adding scroll bars to a component (such as a
* Window) whose contents fit in the component.
* <p>
* See: bugs #11994 and #12736.
*
* @param contentNode
* an element that is scrollable
*
* @since 7.1.8
*/
public static void removeUnneededScrollbars(final Element scrollable) {
if (BrowserInfo.get().isWebkit()) {

/*
* Shake up the DOM a bit to make the window shed unnecessary
* scrollbars and resize correctly afterwards. This resulting code
* took over a week to summon forth, and involved some pretty hairy
* black magic. Don't touch it unless you know what you're doing!
* Fixes ticket #11994. Later modified to fix ticket #12736.
*/
Scheduler.get().scheduleFinally(new ScheduledCommand() {

@Override
public void execute() {
// Adjusting the width or height may change the scroll
// position, so store the current position
int horizontalScrollPosition = scrollable.getScrollLeft();
int verticalScrollPosition = scrollable.getScrollTop();

final String oldWidth = scrollable.getStyle().getWidth();
final String oldHeight = scrollable.getStyle().getHeight();

scrollable.getStyle().setWidth(110, Unit.PCT);
scrollable.getOffsetWidth();
scrollable.getStyle().setProperty("width", oldWidth);
scrollable.getStyle().setHeight(110, Unit.PCT);
scrollable.getOffsetHeight();
scrollable.getStyle().setProperty("height", oldHeight);

// Restore the scroll position
scrollable.setScrollLeft(horizontalScrollPosition);
scrollable.setScrollTop(verticalScrollPosition);

}
});

}
}

/**
* Parses shared state and fetches the relative size of the component. If a
* dimension is not specified as relative it will return -1. If the shared

+ 0
- 2
client/src/com/vaadin/client/ui/VPanel.java View File

@@ -24,7 +24,6 @@ import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.SimplePanel;
import com.vaadin.client.ApplicationConnection;
import com.vaadin.client.Focusable;
import com.vaadin.client.Util;
import com.vaadin.client.ui.ShortcutActionHandler.ShortcutActionHandlerOwner;
import com.vaadin.client.ui.TouchScrollDelegate.TouchScrollHandler;

@@ -207,6 +206,5 @@ public class VPanel extends SimplePanel implements ShortcutActionHandlerOwner,
touchScrollHandler = TouchScrollDelegate.enableTouchScrolling(this);
}
touchScrollHandler.addElement(contentNode);
Util.removeUnneededScrollbars(contentNode);
}
}

+ 2
- 2
client/src/com/vaadin/client/ui/VScrollTable.java View File

@@ -4234,8 +4234,8 @@ public class VScrollTable extends FlowPanel implements HasWidgets,
// Already updated by setColWidth called from
// TableHeads.updateCellsFromUIDL in case of a server
// side resize
final String width = col.getStringAttribute("width");
c.setWidth(Integer.parseInt(width), true);
final int width = col.getIntAttribute("width");
c.setWidth(width, true);
}
} else if (recalcWidths) {
c.setUndefinedWidth();

+ 0
- 3
client/src/com/vaadin/client/ui/VUI.java View File

@@ -100,9 +100,6 @@ public class VUI extends SimplePanel implements ResizeHandler,
/** stored height of parent for embedded application auto-resize */
private int parentHeight;

/** For internal use only. May be removed or replaced in the future. */
public boolean rendering;

/** For internal use only. May be removed or replaced in the future. */
public boolean immediate;


+ 41
- 5
client/src/com/vaadin/client/ui/VWindow.java View File

@@ -345,11 +345,47 @@ public class VWindow extends VOverlay implements ShortcutActionHandlerOwner,
if (!visibilityChangesDisabled) {
super.setVisible(visible);
}
if (visible && BrowserInfo.get().isWebkit()) {
Util.removeUnneededScrollbars((Element) contents
.getFirstChildElement());
updateContentsSize();
positionOrSizeUpdated();

if (visible
&& BrowserInfo.get().requiresPositionAbsoluteOverflowAutoFix()) {

/*
* Shake up the DOM a bit to make the window shed unnecessary
* scrollbars and resize correctly afterwards. This resulting code
* took over a week to summon forth, and involved some pretty hairy
* black magic. Don't touch it unless you know what you're doing!
* Fixes ticket #11994
*/
Scheduler.get().scheduleFinally(new ScheduledCommand() {
@Override
public void execute() {
final com.google.gwt.dom.client.Element scrollable = contents
.getFirstChildElement();

// Adjusting the width or height may change the scroll
// position, so store the current position
int horizontalScrollPosition = scrollable.getScrollLeft();
int verticalScrollPosition = scrollable.getScrollTop();

final String oldWidth = scrollable.getStyle().getWidth();
final String oldHeight = scrollable.getStyle().getHeight();

scrollable.getStyle().setWidth(110, Unit.PCT);
scrollable.getOffsetWidth();
scrollable.getStyle().setProperty("width", oldWidth);

scrollable.getStyle().setHeight(110, Unit.PCT);
scrollable.getOffsetHeight();
scrollable.getStyle().setProperty("height", oldHeight);

// Restore the scroll position
scrollable.setScrollLeft(horizontalScrollPosition);
scrollable.setScrollTop(verticalScrollPosition);

updateContentsSize();
positionOrSizeUpdated();
}
});
}
}


+ 12
- 10
client/src/com/vaadin/client/ui/ui/UIConnector.java View File

@@ -130,11 +130,16 @@ public class UIConnector extends AbstractSingleComponentContainerConnector
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
if (sessionExpired) {
getConnection().showSessionExpiredError(null);
} else {
getState().enabled = false;
updateEnabledState(getState().enabled);
// Only notify user if we're still running and not eg.
// navigating away (#12298)
if (getConnection().isApplicationRunning()) {
if (sessionExpired) {
getConnection().showSessionExpiredError(null);
} else {
getState().enabled = false;
updateEnabledState(getState().enabled);
}
getConnection().setApplicationRunning(false);
}
}
});
@@ -192,7 +197,6 @@ public class UIConnector extends AbstractSingleComponentContainerConnector
@Override
public void updateFromUIDL(final UIDL uidl, ApplicationConnection client) {
ConnectorMap paintableMap = ConnectorMap.get(getConnection());
getWidget().rendering = true;
getWidget().id = getConnectorId();
boolean firstPaint = getWidget().connection == null;
getWidget().connection = client;
@@ -285,9 +289,8 @@ public class UIConnector extends AbstractSingleComponentContainerConnector
childIndex++;
}
if (isClosed) {
// don't render the content, something else will be opened to this
// browser view
getWidget().rendering = false;
// We're navigating away, so stop the application.
client.setApplicationRunning(false);
return;
}

@@ -397,7 +400,6 @@ public class UIConnector extends AbstractSingleComponentContainerConnector
}
});
}
getWidget().rendering = false;
}

/**

+ 0
- 3
publish.xml View File

@@ -11,9 +11,6 @@
<ivy:settings file="ivysettings-publish.xml" id="publish.settings" />
<property file="publish.properties" />

<available property="ant-jsch.present" file="${ant.home}/lib/ant-jsch.jar" />
<available property="jsch.present" file="${ant.home}/lib/jsch-0.1.48.jar" />

<target name="nightly.publish" depends="nightly.download.publish, nightly.maven.publish">

</target>

+ 14
- 2
server/src/com/vaadin/server/communication/PushHandler.java View File

@@ -264,11 +264,12 @@ public class PushHandler extends AtmosphereResourceEventListenerAdapter
return;
}

UI ui = null;
session.lock();
try {
VaadinSession.setCurrent(session);
// Sets UI.currentInstance
final UI ui = service.findUI(vaadinRequest);
ui = service.findUI(vaadinRequest);
if (ui == null) {
sendNotificationAndDisconnect(resource,
UidlRequestHandler.getUINotFoundErrorJSON(service,
@@ -282,8 +283,19 @@ public class PushHandler extends AtmosphereResourceEventListenerAdapter
SystemMessages msg = service.getSystemMessages(
ServletPortletHelper.findLocale(null, null,
vaadinRequest), vaadinRequest);

AtmosphereResource errorResource = resource;
if (ui != null && ui.getPushConnection() != null) {
// We MUST use the opened push connection if there is one.
// Otherwise we will write the response to the wrong request
// when using streaming (the client -> server request
// instead of the opened push channel)
errorResource = ((AtmospherePushConnection) ui
.getPushConnection()).getResource();
}

sendNotificationAndDisconnect(
resource,
errorResource,
VaadinService.createCriticalNotificationJSON(
msg.getInternalErrorCaption(),
msg.getInternalErrorMessage(), null,

+ 2
- 2
server/src/com/vaadin/ui/TreeTable.java View File

@@ -590,11 +590,11 @@ public class TreeTable extends Table implements Hierarchical {
// does not change component hierarchy during paint
containerSupportsPartialUpdates = (newDataSource instanceof ItemSetChangeNotifier) && false;

if (!(newDataSource instanceof Hierarchical)) {
if (newDataSource != null && !(newDataSource instanceof Hierarchical)) {
newDataSource = new ContainerHierarchicalWrapper(newDataSource);
}

if (!(newDataSource instanceof Ordered)) {
if (newDataSource != null && !(newDataSource instanceof Ordered)) {
newDataSource = new HierarchicalContainerOrderedWrapper(
(Hierarchical) newDataSource);
}

+ 15
- 0
server/tests/src/com/vaadin/tests/server/component/treetable/TreeTableSetContainerNull.java View File

@@ -0,0 +1,15 @@
package com.vaadin.tests.server.component.treetable;

import junit.framework.TestCase;

import com.vaadin.ui.TreeTable;

public class TreeTableSetContainerNull extends TestCase {

public void testNullContainer() {
TreeTable treeTable = new TreeTable();

// should not cause an exception
treeTable.setContainerDataSource(null);
}
}

+ 15
- 0
theme-compiler/apache2header.txt View File

@@ -0,0 +1,15 @@
/*
* Copyright 2000-2013 Vaadin Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/

+ 25
- 3
theme-compiler/build.xml View File

@@ -1,6 +1,6 @@
<?xml version="1.0"?>

<project name="vaadin-theme-compiler" basedir="." default="publish-local" xmlns:ivy="antlib:org.apache.ivy.ant">
<project name="vaadin-theme-compiler" basedir="." default="publish-local" xmlns:ivy="antlib:org.apache.ivy.ant" xmlns:antcontrib="antlib:net.sf.antcontrib">
<description>
Compiles build helpers used when building other modules.
</description>
@@ -12,7 +12,10 @@
<property name="module.name" value="vaadin-theme-compiler" />
<property name="module.symbolic" value="com.vaadin.theme-compiler" />
<property name="result.dir" value="result" />
<property name="sass.parser.jj" location="src/com/vaadin/sass/internal/parser/Parser.jj" />
<property name="parser.src.dir" value="src/com/vaadin/sass/internal/parser" />
<property name="generate.dir" value="${result.dir}/generated/${parser.src.dir}" />
<property name="header.file" location="apache2header.txt" />

<path id="classpath.compile.custom">
</path>
<path id="classpath.test.custom" />
@@ -25,8 +28,27 @@
javacc task requires the jar to be named javacc.jar -->
<property name="javacc.home" location="${result.dir}/javacc" />
<ivy:retrieve organisation="net.java.dev.javacc" module="javacc" revision="5.0" inline="true" type="jar" pattern="${javacc.home}/[artifact].[ext]" />
<javacc target="${sass.parser.jj}" javacchome="${javacc.home}">
<delete dir="${generate.dir}" />
<mkdir dir="${generate.dir}" />
<!-- Generate new parser files in another directory, this ensure
they are always generated -->
<copy file="${parser.src.dir}/Parser.jj" todir="${generate.dir}" />
<javacc target="${generate.dir}/Parser.jj" javacchome="${javacc.home}">
</javacc>
<!-- Add headers to the generated files and copy back to src -->
<antcontrib:foreach target="prepend.generated.file.header" param="path">
<path>
<fileset dir="${generate.dir}" includes="*.java" excludes="ParseException.java" />
</path>
</antcontrib:foreach>
</target>

<target name="prepend.generated.file.header">
<basename property="file" file="${path}" />
<concat destfile="${parser.src.dir}/${file}">
<header filtering="no" trimleading="no" file="${header.file}" />
<path path="${generate.dir}/${file}" />
</concat>
</target>

<target name="jar" depends="parser">

+ 3
- 2
theme-compiler/src/com/vaadin/sass/internal/handler/SCSSDocumentHandler.java View File

@@ -18,6 +18,7 @@ package com.vaadin.sass.internal.handler;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import org.w3c.css.sac.CSSException;
import org.w3c.css.sac.DocumentHandler;
@@ -50,7 +51,7 @@ public interface SCSSDocumentHandler extends DocumentHandler {

void endNestedProperties(String name);

void includeDirective(String name, Collection<LexicalUnitImpl> args);
void includeDirective(String name, List<LexicalUnitImpl> args);

void importStyle(String uri, SACMediaList media, boolean isURL);

@@ -98,7 +99,7 @@ public interface SCSSDocumentHandler extends DocumentHandler {

void contentDirective();

void startIncludeContentBlock(String name);
void startIncludeContentBlock(String name, List<LexicalUnitImpl> args);

void endIncludeContentBlock();


+ 4
- 3
theme-compiler/src/com/vaadin/sass/internal/handler/SCSSDocumentHandlerImpl.java View File

@@ -18,6 +18,7 @@ package com.vaadin.sass.internal.handler;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Stack;

import org.w3c.css.sac.CSSException;
@@ -244,7 +245,7 @@ public class SCSSDocumentHandlerImpl implements SCSSDocumentHandler {
}

@Override
public void includeDirective(String name, Collection<LexicalUnitImpl> args) {
public void includeDirective(String name, List<LexicalUnitImpl> args) {
MixinNode node = new MixinNode(name, args);
nodeStack.peek().appendChild(node);
}
@@ -374,8 +375,8 @@ public class SCSSDocumentHandlerImpl implements SCSSDocumentHandler {
}

@Override
public void startIncludeContentBlock(String name) {
MixinNode node = new MixinNode(name);
public void startIncludeContentBlock(String name, List<LexicalUnitImpl> args) {
MixinNode node = new MixinNode(name, args);
nodeStack.peek().appendChild(node);
nodeStack.push(node);


+ 13
- 0
theme-compiler/src/com/vaadin/sass/internal/parser/LexicalUnitImpl.java View File

@@ -377,6 +377,19 @@ public class LexicalUnitImpl implements LexicalUnit, SCSSLexicalUnit,
}
}

// A helper method for sass interpolation
public String unquotedString() {
String result = toString();
if (result.length() >= 2
&& ((result.charAt(0) == '"' && result
.charAt(result.length() - 1) == '"') || (result
.charAt(0) == '\'' && result
.charAt(result.length() - 1) == '\''))) {
result = result.substring(1, result.length() - 1);
}
return result;
}

@Override
public LexicalUnitImpl divide(LexicalUnitImpl denominator) {
if (denominator.getLexicalUnitType() != SAC_INTEGER

+ 7430
- 8223
theme-compiler/src/com/vaadin/sass/internal/parser/Parser.java
File diff suppressed because it is too large
View File


+ 9
- 7
theme-compiler/src/com/vaadin/sass/internal/parser/Parser.jj View File

@@ -848,7 +848,7 @@ void keyframes() :
n=<KEY_FRAME_SYM> ( <S> )* {keyframeName = n.image;}
(n = <IDENT>{animationname += n.image; }|n = < INTERPOLATION >{ animationname += n.image; })+(<S>)*
{start = true; documentHandler.startKeyFrames(keyframeName, animationname); }
<LBRACE> ( <S> )* ( keyframeSelector() )* <RBRACE> ( <S> )*
<LBRACE> ( <S> )* ( keyframeSelector() | contentDirective() )* <RBRACE> ( <S> )*
} catch (ParseException e) {
reportError(getLocator(), e);
skipStatement();
@@ -862,14 +862,17 @@ void keyframes() :
void keyframeSelector():
{
Token n;
String selector = "";
boolean start = false;
}
{
try{
(n = <FROM> | n = <TO> | n = <PERCENTAGE>) (<S>)* <LBRACE> (<S>)*
(n = <FROM> | n = <TO> | n = <PERCENTAGE>){selector += n.image;} (<S>)*
(<COMMA> (<S>)* (n = <FROM> | n = <TO> | n = <PERCENTAGE>) {selector += (", " + n.image);} (<S>)* )*
<LBRACE> (<S>)*
{
start = true;
documentHandler.startKeyframeSelector(n.image);
documentHandler.startKeyframeSelector(selector);
}
(ifContentStatement() | microsoftExtension() )*
<RBRACE> (<S>)*
@@ -1726,12 +1729,11 @@ void includeDirective() :
(<S>)*
(name = property()|name = variableName(){ name = "$"+name;}
|(name = functionName()
args = argValuelist()) <RPARAN>)
(<S>)*
args = argValuelist()) <RPARAN>(<S>)*)
((";"(<S>)*)+
{documentHandler.includeDirective(name, args);}
| <LBRACE> (<S>)* {documentHandler.startIncludeContentBlock(name);}
(styleRuleOrDeclarationOrNestedProperties())*
| <LBRACE> (<S>)* {documentHandler.startIncludeContentBlock(name, args);}
(styleRuleOrDeclarationOrNestedProperties() | keyframeSelector())*
<RBRACE> (<S>)* {documentHandler.endIncludeContentBlock();}
)
}

+ 366
- 267
theme-compiler/src/com/vaadin/sass/internal/parser/ParserConstants.java View File

@@ -16,278 +16,377 @@
/* Generated By:JavaCC: Do not edit this line. ParserConstants.java */
package com.vaadin.sass.internal.parser;


/**
* Token literal values and constants. Generated by
* org.javacc.parser.OtherFilesGen#start()
* Token literal values and constants.
* Generated by org.javacc.parser.OtherFilesGen#start()
*/
public interface ParserConstants {

/** End of File. */
int EOF = 0;
/** RegularExpression Id. */
int S = 1;
/** RegularExpression Id. */
int SINGLE_LINE_COMMENT = 2;
/** RegularExpression Id. */
int FORMAL_COMMENT = 5;
/** RegularExpression Id. */
int MULTI_LINE_COMMENT = 6;
/** RegularExpression Id. */
int CDO = 8;
/** RegularExpression Id. */
int CDC = 9;
/** RegularExpression Id. */
int LBRACE = 10;
/** RegularExpression Id. */
int RBRACE = 11;
/** RegularExpression Id. */
int DASHMATCH = 12;
/** RegularExpression Id. */
int CARETMATCH = 13;
/** RegularExpression Id. */
int DOLLARMATCH = 14;
/** RegularExpression Id. */
int STARMATCH = 15;
/** RegularExpression Id. */
int INCLUDES = 16;
/** RegularExpression Id. */
int EQ = 17;
/** RegularExpression Id. */
int PLUS = 18;
/** RegularExpression Id. */
int MINUS = 19;
/** RegularExpression Id. */
int COMMA = 20;
/** RegularExpression Id. */
int SEMICOLON = 21;
/** RegularExpression Id. */
int PRECEDES = 22;
/** RegularExpression Id. */
int SIBLING = 23;
/** RegularExpression Id. */
int SUCCEEDS = 24;
/** RegularExpression Id. */
int DIV = 25;
/** RegularExpression Id. */
int LBRACKET = 26;
/** RegularExpression Id. */
int RBRACKET = 27;
/** RegularExpression Id. */
int ANY = 28;
/** RegularExpression Id. */
int MOD = 29;
/** RegularExpression Id. */
int PARENT = 30;
/** RegularExpression Id. */
int DOT = 31;
/** RegularExpression Id. */
int LPARAN = 32;
/** RegularExpression Id. */
int RPARAN = 33;
/** RegularExpression Id. */
int COMPARE = 34;
/** RegularExpression Id. */
int OR = 35;
/** RegularExpression Id. */
int AND = 36;
/** RegularExpression Id. */
int NOT_EQ = 37;
/** RegularExpression Id. */
int COLON = 38;
/** RegularExpression Id. */
int INTERPOLATION = 39;
/** RegularExpression Id. */
int NONASCII = 40;
/** RegularExpression Id. */
int H = 41;
/** RegularExpression Id. */
int UNICODE = 42;
/** RegularExpression Id. */
int ESCAPE = 43;
/** RegularExpression Id. */
int NMSTART = 44;
/** RegularExpression Id. */
int NMCHAR = 45;
/** RegularExpression Id. */
int STRINGCHAR = 46;
/** RegularExpression Id. */
int D = 47;
/** RegularExpression Id. */
int NAME = 48;
/** RegularExpression Id. */
int TO = 49;
/** RegularExpression Id. */
int THROUGH = 50;
/** RegularExpression Id. */
int EACH_IN = 51;
/** RegularExpression Id. */
int FROM = 52;
/** RegularExpression Id. */
int MIXIN_SYM = 53;
/** RegularExpression Id. */
int INCLUDE_SYM = 54;
/** RegularExpression Id. */
int FUNCTION_SYM = 55;
/** RegularExpression Id. */
int RETURN_SYM = 56;
/** RegularExpression Id. */
int DEBUG_SYM = 57;
/** RegularExpression Id. */
int WARN_SYM = 58;
/** RegularExpression Id. */
int FOR_SYM = 59;
/** RegularExpression Id. */
int EACH_SYM = 60;
/** RegularExpression Id. */
int WHILE_SYM = 61;
/** RegularExpression Id. */
int IF_SYM = 62;
/** RegularExpression Id. */
int ELSE_SYM = 63;
/** RegularExpression Id. */
int EXTEND_SYM = 64;
/** RegularExpression Id. */
int MOZ_DOCUMENT_SYM = 65;
/** RegularExpression Id. */
int SUPPORTS_SYM = 66;
/** RegularExpression Id. */
int CONTENT_SYM = 67;
/** RegularExpression Id. */
int MICROSOFT_RULE = 68;
/** RegularExpression Id. */
int IF = 69;
/** RegularExpression Id. */
int GUARDED_SYM = 70;
/** RegularExpression Id. */
int STRING = 71;
/** RegularExpression Id. */
int IDENT = 72;
/** RegularExpression Id. */
int NUMBER = 73;
/** RegularExpression Id. */
int _URL = 74;
/** RegularExpression Id. */
int URL = 75;
/** RegularExpression Id. */
int VARIABLE = 76;
/** RegularExpression Id. */
int PERCENTAGE = 77;
/** RegularExpression Id. */
int PT = 78;
/** RegularExpression Id. */
int MM = 79;
/** RegularExpression Id. */
int CM = 80;
/** RegularExpression Id. */
int PC = 81;
/** RegularExpression Id. */
int IN = 82;
/** RegularExpression Id. */
int PX = 83;
/** RegularExpression Id. */
int EMS = 84;
/** RegularExpression Id. */
int LEM = 85;
/** RegularExpression Id. */
int REM = 86;
/** RegularExpression Id. */
int EXS = 87;
/** RegularExpression Id. */
int DEG = 88;
/** RegularExpression Id. */
int RAD = 89;
/** RegularExpression Id. */
int GRAD = 90;
/** RegularExpression Id. */
int MS = 91;
/** RegularExpression Id. */
int SECOND = 92;
/** RegularExpression Id. */
int HZ = 93;
/** RegularExpression Id. */
int KHZ = 94;
/** RegularExpression Id. */
int DIMEN = 95;
/** RegularExpression Id. */
int HASH = 96;
/** RegularExpression Id. */
int IMPORT_SYM = 97;
/** RegularExpression Id. */
int MEDIA_SYM = 98;
/** RegularExpression Id. */
int CHARSET_SYM = 99;
/** RegularExpression Id. */
int PAGE_SYM = 100;
/** RegularExpression Id. */
int FONT_FACE_SYM = 101;
/** RegularExpression Id. */
int KEY_FRAME_SYM = 102;
/** RegularExpression Id. */
int ATKEYWORD = 103;
/** RegularExpression Id. */
int IMPORTANT_SYM = 104;
/** RegularExpression Id. */
int RANGE0 = 105;
/** RegularExpression Id. */
int RANGE1 = 106;
/** RegularExpression Id. */
int RANGE2 = 107;
/** RegularExpression Id. */
int RANGE3 = 108;
/** RegularExpression Id. */
int RANGE4 = 109;
/** RegularExpression Id. */
int RANGE5 = 110;
/** RegularExpression Id. */
int RANGE6 = 111;
/** RegularExpression Id. */
int RANGE = 112;
/** RegularExpression Id. */
int UNI = 113;
/** RegularExpression Id. */
int UNICODERANGE = 114;
/** RegularExpression Id. */
int REMOVE = 115;
/** RegularExpression Id. */
int APPEND = 116;
/** RegularExpression Id. */
int CONTAINS = 117;
/** RegularExpression Id. */
int FUNCTION = 118;
/** RegularExpression Id. */
int UNKNOWN = 119;
/** End of File. */
int EOF = 0;
/** RegularExpression Id. */
int S = 1;
/** RegularExpression Id. */
int SINGLE_LINE_COMMENT = 2;
/** RegularExpression Id. */
int FORMAL_COMMENT = 5;
/** RegularExpression Id. */
int MULTI_LINE_COMMENT = 6;
/** RegularExpression Id. */
int CDO = 8;
/** RegularExpression Id. */
int CDC = 9;
/** RegularExpression Id. */
int LBRACE = 10;
/** RegularExpression Id. */
int RBRACE = 11;
/** RegularExpression Id. */
int DASHMATCH = 12;
/** RegularExpression Id. */
int CARETMATCH = 13;
/** RegularExpression Id. */
int DOLLARMATCH = 14;
/** RegularExpression Id. */
int STARMATCH = 15;
/** RegularExpression Id. */
int INCLUDES = 16;
/** RegularExpression Id. */
int EQ = 17;
/** RegularExpression Id. */
int PLUS = 18;
/** RegularExpression Id. */
int MINUS = 19;
/** RegularExpression Id. */
int COMMA = 20;
/** RegularExpression Id. */
int SEMICOLON = 21;
/** RegularExpression Id. */
int PRECEDES = 22;
/** RegularExpression Id. */
int SIBLING = 23;
/** RegularExpression Id. */
int SUCCEEDS = 24;
/** RegularExpression Id. */
int DIV = 25;
/** RegularExpression Id. */
int LBRACKET = 26;
/** RegularExpression Id. */
int RBRACKET = 27;
/** RegularExpression Id. */
int ANY = 28;
/** RegularExpression Id. */
int MOD = 29;
/** RegularExpression Id. */
int PARENT = 30;
/** RegularExpression Id. */
int DOT = 31;
/** RegularExpression Id. */
int LPARAN = 32;
/** RegularExpression Id. */
int RPARAN = 33;
/** RegularExpression Id. */
int COMPARE = 34;
/** RegularExpression Id. */
int OR = 35;
/** RegularExpression Id. */
int AND = 36;
/** RegularExpression Id. */
int NOT_EQ = 37;
/** RegularExpression Id. */
int COLON = 38;
/** RegularExpression Id. */
int INTERPOLATION = 39;
/** RegularExpression Id. */
int NONASCII = 40;
/** RegularExpression Id. */
int H = 41;
/** RegularExpression Id. */
int UNICODE = 42;
/** RegularExpression Id. */
int ESCAPE = 43;
/** RegularExpression Id. */
int NMSTART = 44;
/** RegularExpression Id. */
int NMCHAR = 45;
/** RegularExpression Id. */
int STRINGCHAR = 46;
/** RegularExpression Id. */
int D = 47;
/** RegularExpression Id. */
int NAME = 48;
/** RegularExpression Id. */
int TO = 49;
/** RegularExpression Id. */
int THROUGH = 50;
/** RegularExpression Id. */
int EACH_IN = 51;
/** RegularExpression Id. */
int FROM = 52;
/** RegularExpression Id. */
int MIXIN_SYM = 53;
/** RegularExpression Id. */
int INCLUDE_SYM = 54;
/** RegularExpression Id. */
int FUNCTION_SYM = 55;
/** RegularExpression Id. */
int RETURN_SYM = 56;
/** RegularExpression Id. */
int DEBUG_SYM = 57;
/** RegularExpression Id. */
int WARN_SYM = 58;
/** RegularExpression Id. */
int FOR_SYM = 59;
/** RegularExpression Id. */
int EACH_SYM = 60;
/** RegularExpression Id. */
int WHILE_SYM = 61;
/** RegularExpression Id. */
int IF_SYM = 62;
/** RegularExpression Id. */
int ELSE_SYM = 63;
/** RegularExpression Id. */
int EXTEND_SYM = 64;
/** RegularExpression Id. */
int MOZ_DOCUMENT_SYM = 65;
/** RegularExpression Id. */
int SUPPORTS_SYM = 66;
/** RegularExpression Id. */
int CONTENT_SYM = 67;
/** RegularExpression Id. */
int MICROSOFT_RULE = 68;
/** RegularExpression Id. */
int IF = 69;
/** RegularExpression Id. */
int GUARDED_SYM = 70;
/** RegularExpression Id. */
int STRING = 71;
/** RegularExpression Id. */
int IDENT = 72;
/** RegularExpression Id. */
int NUMBER = 73;
/** RegularExpression Id. */
int _URL = 74;
/** RegularExpression Id. */
int URL = 75;
/** RegularExpression Id. */
int VARIABLE = 76;
/** RegularExpression Id. */
int PERCENTAGE = 77;
/** RegularExpression Id. */
int PT = 78;
/** RegularExpression Id. */
int MM = 79;
/** RegularExpression Id. */
int CM = 80;
/** RegularExpression Id. */
int PC = 81;
/** RegularExpression Id. */
int IN = 82;
/** RegularExpression Id. */
int PX = 83;
/** RegularExpression Id. */
int EMS = 84;
/** RegularExpression Id. */
int LEM = 85;
/** RegularExpression Id. */
int REM = 86;
/** RegularExpression Id. */
int EXS = 87;
/** RegularExpression Id. */
int DEG = 88;
/** RegularExpression Id. */
int RAD = 89;
/** RegularExpression Id. */
int GRAD = 90;
/** RegularExpression Id. */
int MS = 91;
/** RegularExpression Id. */
int SECOND = 92;
/** RegularExpression Id. */
int HZ = 93;
/** RegularExpression Id. */
int KHZ = 94;
/** RegularExpression Id. */
int DIMEN = 95;
/** RegularExpression Id. */
int HASH = 96;
/** RegularExpression Id. */
int IMPORT_SYM = 97;
/** RegularExpression Id. */
int MEDIA_SYM = 98;
/** RegularExpression Id. */
int CHARSET_SYM = 99;
/** RegularExpression Id. */
int PAGE_SYM = 100;
/** RegularExpression Id. */
int FONT_FACE_SYM = 101;
/** RegularExpression Id. */
int KEY_FRAME_SYM = 102;
/** RegularExpression Id. */
int ATKEYWORD = 103;
/** RegularExpression Id. */
int IMPORTANT_SYM = 104;
/** RegularExpression Id. */
int RANGE0 = 105;
/** RegularExpression Id. */
int RANGE1 = 106;
/** RegularExpression Id. */
int RANGE2 = 107;
/** RegularExpression Id. */
int RANGE3 = 108;
/** RegularExpression Id. */
int RANGE4 = 109;
/** RegularExpression Id. */
int RANGE5 = 110;
/** RegularExpression Id. */
int RANGE6 = 111;
/** RegularExpression Id. */
int RANGE = 112;
/** RegularExpression Id. */
int UNI = 113;
/** RegularExpression Id. */
int UNICODERANGE = 114;
/** RegularExpression Id. */
int REMOVE = 115;
/** RegularExpression Id. */
int APPEND = 116;
/** RegularExpression Id. */
int CONTAINS = 117;
/** RegularExpression Id. */
int FUNCTION = 118;
/** RegularExpression Id. */
int UNKNOWN = 119;

/** Lexical state. */
int DEFAULT = 0;
/** Lexical state. */
int IN_FORMAL_COMMENT = 1;
/** Lexical state. */
int IN_MULTI_LINE_COMMENT = 2;
/** Lexical state. */
int DEFAULT = 0;
/** Lexical state. */
int IN_FORMAL_COMMENT = 1;
/** Lexical state. */
int IN_MULTI_LINE_COMMENT = 2;

/** Literal token values. */
String[] tokenImage = { "<EOF>", "<S>", "<SINGLE_LINE_COMMENT>",
"<token of kind 3>", "\"/*\"", "\"*/\"", "\"*/\"",
"<token of kind 7>", "\"<!--\"", "\"-->\"", "\"{\"", "\"}\"",
"\"|=\"", "\"^=\"", "\"$=\"", "\"*=\"", "\"~=\"", "\"=\"", "\"+\"",
"\"-\"", "\",\"", "\";\"", "\">\"", "\"~\"", "\"<\"", "\"/\"",
"\"[\"", "\"]\"", "\"*\"", "\"%\"", "\"&\"", "\".\"", "\"(\"",
"\")\"", "\"==\"", "\"||\"", "\"&&\"", "\"!=\"", "\":\"",
"<INTERPOLATION>", "<NONASCII>", "<H>", "<UNICODE>", "<ESCAPE>",
"<NMSTART>", "<NMCHAR>", "<STRINGCHAR>", "<D>", "<NAME>", "\"to\"",
"\"through\"", "\"in\"", "\"from\"", "\"@mixin\"", "\"@include\"",
"\"@function\"", "\"@return\"", "\"@debug\"", "\"@warn\"",
"\"@for\"", "\"@each\"", "\"@while\"", "\"@if\"", "\"@else\"",
"\"@extend\"", "\"@-moz-document\"", "\"@supports\"",
"\"@content\"", "<MICROSOFT_RULE>", "\"if\"", "<GUARDED_SYM>",
"<STRING>", "<IDENT>", "<NUMBER>", "<_URL>", "<URL>", "<VARIABLE>",
"<PERCENTAGE>", "<PT>", "<MM>", "<CM>", "<PC>", "<IN>", "<PX>",
"<EMS>", "<LEM>", "<REM>", "<EXS>", "<DEG>", "<RAD>", "<GRAD>",
"<MS>", "<SECOND>", "<HZ>", "<KHZ>", "<DIMEN>", "<HASH>",
"\"@import\"", "\"@media\"", "\"@charset\"", "\"@page\"",
"\"@font-face\"", "<KEY_FRAME_SYM>", "<ATKEYWORD>",
"<IMPORTANT_SYM>", "<RANGE0>", "<RANGE1>", "<RANGE2>", "<RANGE3>",
"<RANGE4>", "<RANGE5>", "<RANGE6>", "<RANGE>", "<UNI>",
"<UNICODERANGE>", "<REMOVE>", "<APPEND>", "<CONTAINS>",
"<FUNCTION>", "<UNKNOWN>", };
/** Literal token values. */
String[] tokenImage = {
"<EOF>",
"<S>",
"<SINGLE_LINE_COMMENT>",
"<token of kind 3>",
"\"/*\"",
"\"*/\"",
"\"*/\"",
"<token of kind 7>",
"\"<!--\"",
"\"-->\"",
"\"{\"",
"\"}\"",
"\"|=\"",
"\"^=\"",
"\"$=\"",
"\"*=\"",
"\"~=\"",
"\"=\"",
"\"+\"",
"\"-\"",
"\",\"",
"\";\"",
"\">\"",
"\"~\"",
"\"<\"",
"\"/\"",
"\"[\"",
"\"]\"",
"\"*\"",
"\"%\"",
"\"&\"",
"\".\"",
"\"(\"",
"\")\"",
"\"==\"",
"\"||\"",
"\"&&\"",
"\"!=\"",
"\":\"",
"<INTERPOLATION>",
"<NONASCII>",
"<H>",
"<UNICODE>",
"<ESCAPE>",
"<NMSTART>",
"<NMCHAR>",
"<STRINGCHAR>",
"<D>",
"<NAME>",
"\"to\"",
"\"through\"",
"\"in\"",
"\"from\"",
"\"@mixin\"",
"\"@include\"",
"\"@function\"",
"\"@return\"",
"\"@debug\"",
"\"@warn\"",
"\"@for\"",
"\"@each\"",
"\"@while\"",
"\"@if\"",
"\"@else\"",
"\"@extend\"",
"\"@-moz-document\"",
"\"@supports\"",
"\"@content\"",
"<MICROSOFT_RULE>",
"\"if\"",
"<GUARDED_SYM>",
"<STRING>",
"<IDENT>",
"<NUMBER>",
"<_URL>",
"<URL>",
"<VARIABLE>",
"<PERCENTAGE>",
"<PT>",
"<MM>",
"<CM>",
"<PC>",
"<IN>",
"<PX>",
"<EMS>",
"<LEM>",
"<REM>",
"<EXS>",
"<DEG>",
"<RAD>",
"<GRAD>",
"<MS>",
"<SECOND>",
"<HZ>",
"<KHZ>",
"<DIMEN>",
"<HASH>",
"\"@import\"",
"\"@media\"",
"\"@charset\"",
"\"@page\"",
"\"@font-face\"",
"<KEY_FRAME_SYM>",
"<ATKEYWORD>",
"<IMPORTANT_SYM>",
"<RANGE0>",
"<RANGE1>",
"<RANGE2>",
"<RANGE3>",
"<RANGE4>",
"<RANGE5>",
"<RANGE6>",
"<RANGE>",
"<UNI>",
"<UNICODERANGE>",
"<REMOVE>",
"<APPEND>",
"<CONTAINS>",
"<FUNCTION>",
"<UNKNOWN>",
};

}

+ 4951
- 5913
theme-compiler/src/com/vaadin/sass/internal/parser/ParserTokenManager.java
File diff suppressed because it is too large
View File


+ 2
- 1
theme-compiler/src/com/vaadin/sass/internal/tree/BlockNode.java View File

@@ -80,7 +80,8 @@ public class BlockNode extends Node implements IVariableNode {
String interpolation = "#{$" + var.getName() + "}";
if (selector.contains(interpolation)) {
String replace = selector.replace(interpolation, var
.getExpr().toString());
.getExpr().unquotedString());

selectorList.add(selectorList.indexOf(selector), replace);
selectorList.remove(selector);
}

+ 2
- 1
theme-compiler/src/com/vaadin/sass/internal/tree/KeyframesNode.java View File

@@ -54,7 +54,8 @@ public class KeyframesNode extends Node implements IVariableNode {
if (animationName != null && animationName.contains(interpolation)) {
if (animationName.contains(interpolation)) {
animationName = animationName.replaceAll(Pattern
.quote(interpolation), node.getExpr().toString());
.quote(interpolation), node.getExpr()
.unquotedString());
}
}
}

+ 3
- 2
theme-compiler/src/com/vaadin/sass/internal/tree/RuleNode.java View File

@@ -91,7 +91,8 @@ public class RuleNode extends Node implements IVariableNode {

if (variable != null && variable.contains(interpolation)) {
variable = variable.replaceAll(Pattern.quote(interpolation),
node.getExpr().toString());
node.getExpr().unquotedString());

}

if (value.getLexicalUnitType() == LexicalUnitImpl.SAC_FUNCTION) {
@@ -120,7 +121,7 @@ public class RuleNode extends Node implements IVariableNode {
.getValue()
.toString()
.replaceAll(Pattern.quote(interpolation),
node.getExpr().toString()));
node.getExpr().unquotedString()));
}
current = current.getNextLexicalUnit();
}

+ 9
- 0
theme-compiler/tests/resources/automatic/css/fontface-in-mixin_new.css View File

@@ -0,0 +1,9 @@
p {
@font-face {
font-family: "vdebugfont";
src: url('fonts/font.eot');
src: url('fonts/font.eot?#iefix') format("embedded-opentype"), url('fonts/font.woff') format("woff"), url('fonts/font.ttf') format("truetype"), url('fonts/font.svg#fontawesome') format("svg");
font-weight: normal;
font-style: normal;
}
}

+ 1
- 0
theme-compiler/tests/resources/automatic/css/interpolation-singlequote.css View File

@@ -0,0 +1 @@
body { background-color: white; }

+ 10
- 0
theme-compiler/tests/resources/automatic/css/mixin-keyframes.css View File

@@ -0,0 +1,10 @@
@-webkit-keyframes fade-in {
0% { opacity: 0; }
20% , 50%,100% { opacity: 1; }
30%, 75% { opacity: 0; }
}
@-moz-keyframes fade-in {
0% { opacity: 0; }
20% , 50%,100% { opacity: 1; }
30%, 75% { opacity: 0; }
}

+ 17
- 0
theme-compiler/tests/resources/automatic/scss/fontface-in-mixin_new.scss View File

@@ -0,0 +1,17 @@
@mixin debug-globals {
@font-face {
font-family: 'vdebugfont';
src:url('fonts/font.eot');
src:url('fonts/font.eot?#iefix') format('embedded-opentype'),
url('fonts/font.woff') format('woff'),
url('fonts/font.ttf') format('truetype'),
url('fonts/font.svg#fontawesome') format('svg');
font-weight: normal;
font-style: normal;
}

}

p {
@include debug-globals;
}

+ 7
- 0
theme-compiler/tests/resources/automatic/scss/interpolation-singlequote.scss View File

@@ -0,0 +1,7 @@
@mixin bgcolor ($name, $color) {
#{$name}{
background-color: $color;
}
}

@include bgcolor('body', white);

+ 14
- 0
theme-compiler/tests/resources/automatic/scss/mixin-keyframes.scss View File

@@ -0,0 +1,14 @@
@mixin keyframes ($name) {
@-webkit-keyframes #{$name} {
@content;
}
@-moz-keyframes #{$name} {
@content;
}
}

@include keyframes("fade-in") {
0% {opacity: 0;}
20% , 50%,100%{opacity: 1;}
30%, 75% {opacity: 0;}
}

+ 8
- 0
uitest/integration_tests.xml View File

@@ -204,6 +204,13 @@
</antcall>
</target>

<target name="integration-test-jboss-eap6">
<antcall target="run-generic-integration-test">
<param name="startDelay" value="10" />
<param name="target-server" value="jbosseap6" />
</antcall>
</target>

<target name="integration-test-glassfish2">
<antcall target="run-generic-integration-test">
<param name="startDelay" value="10" />
@@ -395,6 +402,7 @@
<antcall target="integration-test-jboss5" />
<antcall target="integration-test-jboss6" />
<antcall target="integration-test-jboss7" />
<antcall target="integration-test-jboss-eap6" />
<antcall target="integration-test-jetty5" />
<antcall target="integration-test-jetty6" />
<antcall target="integration-test-jetty7" />

+ 40
- 0
uitest/src/com/vaadin/tests/components/browserframe/BrowserFrameDoubleScrollbars.java View File

@@ -0,0 +1,40 @@
package com.vaadin.tests.components.browserframe;

import com.vaadin.server.ExternalResource;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.BrowserFrame;
import com.vaadin.ui.TabSheet;

public class BrowserFrameDoubleScrollbars extends AbstractTestUI {

@Override
protected Integer getTicketNumber() {
return 11780;
}

@Override
protected void setup(VaadinRequest request) {

getLayout().setHeight("100%");
getLayout().setSizeFull();
getLayout().getParent().setSizeFull();

TabSheet tabs = new TabSheet();
tabs.setSizeFull();
getLayout().addComponent(tabs);

BrowserFrame help = new BrowserFrame();
help.setSizeFull();
help.setSource(new ExternalResource("/statictestfiles/long-html.htm"));

tabs.addComponent(help);

}

@Override
protected String getTestDescription() {
return "Embedded browser causes second scrollbar";
}

}

+ 15
- 0
uitest/src/com/vaadin/tests/components/browserframe/BrowserFrameDoubleScrollbarsTest.java View File

@@ -0,0 +1,15 @@
package com.vaadin.tests.components.browserframe;

import org.junit.Test;

import com.vaadin.tests.tb3.MultiBrowserTest;

public class BrowserFrameDoubleScrollbarsTest extends MultiBrowserTest {

@Test
public void testWindowRepositioning() throws Exception {
openTestURL();

compareScreen("BrowserFrameDoubleScrollbars");
}
}

Loading…
Cancel
Save