• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

damienbod / angular-auth-oidc-client / 14166189918

31 Mar 2025 07:19AM UTC coverage: 92.694% (-0.1%) from 92.807%
14166189918

push

github

web-flow
Merge pull request #2087 from damienbod/fg/updating-eslint-rules

Updating es lint rules

719 of 844 branches covered (85.19%)

Branch coverage included in aggregate %.

988 of 1046 new or added lines in 18 files covered. (94.46%)

2 existing lines in 1 file now uncovered.

2605 of 2742 relevant lines covered (95.0%)

8.3 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

41.94
/projects/angular-auth-oidc-client/src/lib/iframe/refresh-session-iframe.service.ts
1
import { DOCUMENT } from '@angular/common';
2
import { Injectable, RendererFactory2, inject } from '@angular/core';
3
import { Observable } from 'rxjs';
4
import { switchMap } from 'rxjs/operators';
5
import { OpenIdConfiguration } from '../config/openid-configuration';
6
import { LoggerService } from '../logging/logger.service';
7
import { UrlService } from '../utils/url/url.service';
8
import { SilentRenewService } from './silent-renew.service';
9

10
@Injectable({ providedIn: 'root' })
11
export class RefreshSessionIframeService {
1✔
12
  private readonly renderer = inject(RendererFactory2).createRenderer(
3✔
13
    null,
14
    null
15
  );
16

17
  private readonly loggerService = inject(LoggerService);
3✔
18

19
  private readonly urlService = inject(UrlService);
3✔
20

21
  private readonly silentRenewService = inject(SilentRenewService);
3✔
22

23
  private readonly document = inject(DOCUMENT);
3✔
24

25
  refreshSessionWithIframe(
26
    config: OpenIdConfiguration,
27
    allConfigs: OpenIdConfiguration[],
28
    customParams?: { [key: string]: string | number | boolean }
29
  ): Observable<boolean> {
30
    this.loggerService.logDebug(
1✔
31
      config,
32
      'BEGIN refresh session Authorize Iframe renew'
33
    );
34

35
    return this.urlService
1✔
36
      .getRefreshSessionSilentRenewUrl(config, customParams)
37
      .pipe(
38
        switchMap((url) => {
39
          return this.sendAuthorizeRequestUsingSilentRenew(
1✔
40
            url,
41
            config,
42
            allConfigs
43
          );
44
        })
45
      );
46
  }
47

48
  private sendAuthorizeRequestUsingSilentRenew(
49
    url: string | null,
50
    config: OpenIdConfiguration,
51
    allConfigs: OpenIdConfiguration[]
52
  ): Observable<boolean> {
NEW
53
    const sessionIframe = this.silentRenewService.getOrCreateIframe(config);
×
54

NEW
55
    this.initSilentRenewRequest(config, allConfigs);
×
NEW
56
    this.loggerService.logDebug(
×
57
      config,
58
      `sendAuthorizeRequestUsingSilentRenew for URL: ${url}`
59
    );
60

NEW
61
    return new Observable((observer) => {
×
NEW
62
      const onLoadHandler = (): void => {
×
NEW
63
        sessionIframe.removeEventListener('load', onLoadHandler);
×
NEW
64
        this.loggerService.logDebug(
×
65
          config,
66
          'removed event listener from IFrame'
67
        );
NEW
68
        observer.next(true);
×
NEW
69
        observer.complete();
×
70
      };
71

NEW
72
      sessionIframe.addEventListener('load', onLoadHandler);
×
NEW
73
      sessionIframe.contentWindow?.location.replace(url ?? '');
×
74
    });
75
  }
76

77
  private initSilentRenewRequest(
78
    config: OpenIdConfiguration,
79
    allConfigs: OpenIdConfiguration[]
80
  ): void {
81
    const instanceId = Math.random();
1✔
82
    const initDestroyHandler = this.renderer.listen(
1✔
83
      'window',
84
      'oidc-silent-renew-init',
85
      (e: CustomEvent) => {
NEW
86
        if (e.detail !== instanceId) {
×
NEW
87
          initDestroyHandler();
×
NEW
88
          renewDestroyHandler();
×
89
        }
90
      }
91
    );
92
    const renewDestroyHandler = this.renderer.listen(
1✔
93
      'window',
94
      'oidc-silent-renew-message',
95
      (e) =>
NEW
96
        this.silentRenewService.silentRenewEventHandler(e, config, allConfigs)
×
97
    );
98

99
    this.document.defaultView?.dispatchEvent(
1✔
100
      new CustomEvent('oidc-silent-renew-init', {
101
        detail: instanceId,
102
      })
103
    );
104
  }
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc