I created a page about swcs: 
https://apache.github.io/royale-docs/libraries/library-basics 
<https://apache.github.io/royale-docs/libraries/library-basics>

I added a paragraph about the GCL swc, but I’m really not very clear on how it 
works...

> On Dec 12, 2021, at 5:46 PM, Harbs <harbs.li...@gmail.com> wrote:
> 
> I spent some more time on this, but I’m not sure how to get the compiler to 
> realize that we need the goog files.
> 
> For Event we have this:
> 
> goog.addDependency('../../../org/apache/royale/events/Event.js', 
> ['org.apache.royale.events.Event'], ['goog.events.Event', 
> 'org.apache.royale.events.IRoyaleEvent']);
> 
> But Royale Event subclasses goog.events.Event.
> 
> How do I tell the compiler that org.apache.royale.utils.string.sanitizeUrl 
> requires goog.html.SafeUrl ?
> 
> The same for org.apache.royale.utils.string.sanitizeHtml with 
> goog.html.sanitizer.HtmlSanitizer and goog.html.SafeHtml.
> 
> Alex? Josh? Greg?
> 
> Thanks,
> Harbs
> 
>> On Dec 12, 2021, at 2:13 AM, Harbs <harbs.li...@gmail.com> wrote:
>> 
>> I added code for sanitizing, but it’s not working because the goog.html 
>> files are not being copied. I don’t know what needs to be done to make that 
>> happen.
>> 
>> Harbs
>> 
>>> On Dec 12, 2021, at 2:12 AM, ha...@apache.org wrote:
>>> 
>>> This is an automated email from the ASF dual-hosted git repository.
>>> 
>>> harbs pushed a commit to branch feature/sanitize
>>> in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
>>> 
>>> commit 1b12594c60420d3503f9e366f314c9d875e16ddb
>>> Author: Harbs <ha...@in-tools.com>
>>> AuthorDate: Sun Dec 12 02:12:05 2021 +0200
>>> 
>>>  Added sanitizeUrl and sanitizeHtml
>>> ---
>>> .../projects/Core/src/main/royale/CoreClasses.as   |  2 +
>>> .../org/apache/royale/utils/string/sanitizeHtml.as | 38 ++++++++++++++
>>> .../org/apache/royale/utils/string/sanitizeUrl.as  | 36 +++++++++++++
>>> .../src/test/royale/flexUnitTests/CoreTester.as    |  1 +
>>> .../{CoreTester.as => SanitizeTest.as}             | 59 
>>> ++++++++++++++--------
>>> 5 files changed, 115 insertions(+), 21 deletions(-)
>>> 
>>> diff --git a/frameworks/projects/Core/src/main/royale/CoreClasses.as 
>>> b/frameworks/projects/Core/src/main/royale/CoreClasses.as
>>> index 21593fd..dd088eb 100644
>>> --- a/frameworks/projects/Core/src/main/royale/CoreClasses.as
>>> +++ b/frameworks/projects/Core/src/main/royale/CoreClasses.as
>>> @@ -342,6 +342,8 @@ internal class CoreClasses
>>>     import org.apache.royale.utils.string.trimRight; trimRight;
>>>     import org.apache.royale.utils.string.trimLeft; trimLeft;
>>>     import org.apache.royale.utils.string.cacheBust; cacheBust;
>>> +   import org.apache.royale.utils.string.sanitizeHtml; sanitizeHtml;
>>> +   import org.apache.royale.utils.string.sanitizeUrl; sanitizeUrl;
>>> 
>>>     import org.apache.royale.utils.date.addDays; addDays;
>>>     import org.apache.royale.utils.date.addHours; addHours;
>>> diff --git 
>>> a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/sanitizeHtml.as
>>>  
>>> b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/sanitizeHtml.as
>>> new file mode 100644
>>> index 0000000..360ef63
>>> --- /dev/null
>>> +++ 
>>> b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/sanitizeHtml.as
>>> @@ -0,0 +1,38 @@
>>> +////////////////////////////////////////////////////////////////////////////////
>>> +//
>>> +//  Licensed to the Apache Software Foundation (ASF) under one or more
>>> +//  contributor license agreements.  See the NOTICE file distributed with
>>> +//  this work for additional information regarding copyright ownership.
>>> +//  The ASF licenses this file to You 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.
>>> +//
>>> +////////////////////////////////////////////////////////////////////////////////
>>> +package org.apache.royale.utils.string
>>> +{
>>> +   COMPILE::JS{
>>> +           import goog.html.sanitizer.HtmlSanitizer;
>>> +           import goog.html.SafeHtml;
>>> +   }
>>> +
>>> +   public function sanitizeHtml(html:String):String
>>> +   {
>>> +           COMPILE::JS
>>> +           {
>>> +                   return SafeHtml.unwrap(HtmlSanitizer.sanitize(html));
>>> +           }
>>> +           //TODO sanitize in swf
>>> +           COMPILE::SWF
>>> +           {
>>> +                   return html;
>>> +           }
>>> +   }
>>> +}
>>> \ No newline at end of file
>>> diff --git 
>>> a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/sanitizeUrl.as
>>>  
>>> b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/sanitizeUrl.as
>>> new file mode 100644
>>> index 0000000..cd4151d
>>> --- /dev/null
>>> +++ 
>>> b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/sanitizeUrl.as
>>> @@ -0,0 +1,36 @@
>>> +////////////////////////////////////////////////////////////////////////////////
>>> +//
>>> +//  Licensed to the Apache Software Foundation (ASF) under one or more
>>> +//  contributor license agreements.  See the NOTICE file distributed with
>>> +//  this work for additional information regarding copyright ownership.
>>> +//  The ASF licenses this file to You 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.
>>> +//
>>> +////////////////////////////////////////////////////////////////////////////////
>>> +package org.apache.royale.utils.string
>>> +{
>>> +   COMPILE::JS{
>>> +           import goog.html.SafeUrl;
>>> +           import goog.html.SafeUrl;
>>> +   }
>>> +   public function sanitizeUrl(url:String):String
>>> +   {
>>> +           COMPILE::JS{
>>> +                   return SafeUrl.unwrap(SafeUrl.sanitize(url));
>>> +           }
>>> +
>>> +           //TODO sanitize in swf
>>> +           COMPILE::SWF{
>>> +                   return url;
>>> +           }
>>> +   }
>>> +}
>>> \ No newline at end of file
>>> diff --git 
>>> a/frameworks/projects/Core/src/test/royale/flexUnitTests/CoreTester.as 
>>> b/frameworks/projects/Core/src/test/royale/flexUnitTests/CoreTester.as
>>> index c8adc02..9441daf 100644
>>> --- a/frameworks/projects/Core/src/test/royale/flexUnitTests/CoreTester.as
>>> +++ b/frameworks/projects/Core/src/test/royale/flexUnitTests/CoreTester.as
>>> @@ -42,5 +42,6 @@ package flexUnitTests
>>>       public var keyConverterTest:KeyConverterTest;
>>>       public var keyboardEventConverterTest:KeyboardEventConverterTest;
>>>       public var stringUtilsTest:StringUtilsTest;
>>> +        public var sanitizerTest:SanitizeTest;
>>>   }
>>> }
>>> diff --git 
>>> a/frameworks/projects/Core/src/test/royale/flexUnitTests/CoreTester.as 
>>> b/frameworks/projects/Core/src/test/royale/flexUnitTests/SanitizeTest.as
>>> similarity index 50%
>>> copy from 
>>> frameworks/projects/Core/src/test/royale/flexUnitTests/CoreTester.as
>>> copy to 
>>> frameworks/projects/Core/src/test/royale/flexUnitTests/SanitizeTest.as
>>> index c8adc02..7173f52 100644
>>> --- a/frameworks/projects/Core/src/test/royale/flexUnitTests/CoreTester.as
>>> +++ b/frameworks/projects/Core/src/test/royale/flexUnitTests/SanitizeTest.as
>>> @@ -18,29 +18,46 @@
>>> ////////////////////////////////////////////////////////////////////////////////
>>> package flexUnitTests
>>> {
>>> -    import flexUnitTests.language.*
>>> +    import org.apache.royale.utils.string.*;
>>> +    import org.apache.royale.test.asserts.*;
>>> 
>>> -    [Suite]
>>> -    [RunWith("org.apache.royale.test.runners.SuiteRunner")]
>>> -    public class CoreTester
>>> -    {
>>> +    public class SanitizeTest
>>> +    {              
>>> +        [Before]
>>> +        public function setUp():void
>>> +        {
>>> +        }
>>> 
>>> -        //language tests
>>> -        public var languageTestIs:LanguageTesterTestIs;
>>> -        public var languageTestIntUint:LanguageTesterIntUint;
>>> -        public var languageTestVector:LanguageTesterTestVector;
>>> -        public var languageTestClass:LanguageTesterTestClass;
>>> -        public var languageTestLoopVariants:LanguageTesterTestLoopVariants;
>>> -        public var languageTestArraySort:LanguageTesterArraySort;
>>> -        public var languageTesttryCatch:LanguageTesterTestTryCatch;
>>> +        [After]
>>> +        public function tearDown():void
>>> +        {
>>> +        }
>>> 
>>> -        //core tests
>>> -        public var strandTesterTest:StrandTesterTest;
>>> -           public var binaryDataTesterTest:BinaryDataTesterTest;
>>> -           public var arrayUtilsTest:ArrayUtilsTest;
>>> -           public var dateUtilsTest:DateUtilsTest;
>>> -        public var keyConverterTest:KeyConverterTest;
>>> -        public var keyboardEventConverterTest:KeyboardEventConverterTest;
>>> -        public var stringUtilsTest:StringUtilsTest;
>>> +        [BeforeClass]
>>> +        public static function setUpBeforeClass():void
>>> +        {
>>> +        }
>>> +        
>>> +        [AfterClass]
>>> +        public static function tearDownAfterClass():void
>>> +        {
>>> +        }
>>> +        
>>> +        [Test]
>>> +        public function testHTML():void
>>> +        {
>>> +            var safeHtml:String = 'Hello <em>World</em>';
>>> +            assertEquals(safeHtml, sanitizeHtml(safeHtml));
>>> +        }
>>> +
>>> +        [Test]
>>> +        public function testUrl():void
>>> +        {
>>> +            var safeUrl:String = "https://foobaz.com";
>>> +            assertEquals(safeUrl, sanitizeUrl(safeUrl));
>>> +        }
>>> +
>>> +
>>> +
>>>   }
>>> }
>> 
> 

Reply via email to