merge from ecomp a88f0072 - Modern UI

Issue-ID: VID-378
Change-Id: Ibcb23dd27f550cf32ce2fe0239f0f496ae014ff6
Signed-off-by: Ittay Stern <ittay.stern@att.com>
diff --git a/vid-webpack-master/src/app/shared/pipes/safe/safe.pipe.spec.ts b/vid-webpack-master/src/app/shared/pipes/safe/safe.pipe.spec.ts
new file mode 100644
index 0000000..f047173
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/pipes/safe/safe.pipe.spec.ts
@@ -0,0 +1,60 @@
+import {SafePipe} from "./safe.pipe";
+import {DomSanitizer} from "@angular/platform-browser";
+import {getTestBed, TestBed} from "@angular/core/testing";
+
+
+describe('Safe pipe', () => {
+
+  let injector;
+  let pipe: SafePipe;
+  let sanitizer: DomSanitizer;
+
+  beforeAll(done => (async () => {
+    TestBed.configureTestingModule({
+      providers: [SafePipe]
+    });
+    await TestBed.compileComponents();
+
+    injector = getTestBed();
+    sanitizer = injector.get(DomSanitizer);
+    pipe = injector.get(SafePipe);
+
+  })().then(done).catch(done.fail));
+
+  test('safe pipe should return Safe object', () => {
+    let options = [
+      {
+        value: 'value',
+        type: 'html',
+        func: 'bypassSecurityTrustHtml'
+      },
+      {
+        value: 'value',
+        type: 'style',
+        func: 'bypassSecurityTrustStyle'
+      },
+      {
+        value: 'value',
+        type: 'script',
+        func: 'bypassSecurityTrustScript'
+      },
+      {
+        value: 'value',
+        type: 'url',
+        func: 'bypassSecurityTrustUrl'
+      },
+      {
+        value: 'value',
+        type: 'resourceUrl',
+        func: 'bypassSecurityTrustResourceUrl'
+      }
+    ];
+
+    for (let option of options) {
+      jest.spyOn(sanitizer, <any>option.func);
+      pipe.transform(option.value, option.type);
+      expect(sanitizer[option.func]).toHaveBeenCalledWith(option.value);
+    }
+  });
+
+});
diff --git a/vid-webpack-master/src/app/shared/pipes/safe/safe.pipe.ts b/vid-webpack-master/src/app/shared/pipes/safe/safe.pipe.ts
new file mode 100644
index 0000000..cff5b61
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/pipes/safe/safe.pipe.ts
@@ -0,0 +1,22 @@
+// @ts-ignore
+import {DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl} from "@angular/platform-browser";
+import {Pipe, PipeTransform} from "@angular/core";
+
+
+@Pipe({
+  name: 'safe'
+})
+export class SafePipe implements PipeTransform {
+
+  constructor(protected sanitizer: DomSanitizer) {}
+
+  public transform(value: any, type: string): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {
+    switch (type) {
+      case 'html': return this.sanitizer.bypassSecurityTrustHtml(value);
+      case 'style': return this.sanitizer.bypassSecurityTrustStyle(value);
+      case 'script': return this.sanitizer.bypassSecurityTrustScript(value);
+      case 'url': return this.sanitizer.bypassSecurityTrustUrl(value);
+      case 'resourceUrl': return this.sanitizer.bypassSecurityTrustResourceUrl(value);
+    }
+  }
+}