Skip to content

Commit

Permalink
chore: firefox manager
Browse files Browse the repository at this point in the history
  • Loading branch information
OrKoN committed Jun 28, 2022
2 parents 5bbfbe0 + a14ed2f commit a0cec05
Show file tree
Hide file tree
Showing 11 changed files with 400 additions and 33 deletions.
2 changes: 1 addition & 1 deletion package.json
Expand Up @@ -30,7 +30,7 @@
"test": "npm run lint --silent && npm run test:unit:coverage",
"test:unit": "npm run build:test && mocha",
"test:unit:firefox": "cross-env PUPPETEER_PRODUCT=firefox npm run test:unit",
"test:unit:coverage": "c8 --check-coverage --lines 94 npm run test:unit",
"test:unit:coverage": "c8 --check-coverage --lines 93 npm run test:unit",
"test:unit:chrome-headless": "cross-env HEADLESS=chrome npm run test:unit",
"test:protocol-revision": "ts-node -s scripts/ensure-correct-devtools-protocol-package",
"test:pinned-deps": "ts-node -s scripts/ensure-pinned-deps",
Expand Down
28 changes: 22 additions & 6 deletions src/common/Browser.ts
Expand Up @@ -24,7 +24,12 @@ import {Page} from './Page.js';
import {Viewport} from './PuppeteerViewport.js';
import {Target} from './Target.js';
import {TaskQueue} from './TaskQueue.js';
import {TargetManager, TargetManagerEmittedEvents} from './TargetManager.js';
import {
TargetManager,
ChromeTargetManager,
TargetManagerEmittedEvents,
} from './TargetManager.js';
import {FirefoxTargetManager} from './FirefoxTargetManager.js';

/**
* BrowserContext options.
Expand Down Expand Up @@ -219,6 +224,7 @@ export class Browser extends EventEmitter {
* @internal
*/
static async _create(
product: 'firefox' | 'chrome' | undefined,
connection: Connection,
contextIds: string[],
ignoreHTTPSErrors: boolean,
Expand All @@ -229,6 +235,7 @@ export class Browser extends EventEmitter {
isPageTargetCallback?: IsPageTargetCallback
): Promise<Browser> {
const browser = new Browser(
product,
connection,
contextIds,
ignoreHTTPSErrors,
Expand Down Expand Up @@ -264,6 +271,7 @@ export class Browser extends EventEmitter {
* @internal
*/
constructor(
product: 'chrome' | 'firefox' | undefined,
connection: Connection,
contextIds: string[],
ignoreHTTPSErrors: boolean,
Expand All @@ -274,6 +282,7 @@ export class Browser extends EventEmitter {
isPageTargetCallback?: IsPageTargetCallback
) {
super();
product = product || 'chrome';
this.#ignoreHTTPSErrors = ignoreHTTPSErrors;
this.#defaultViewport = defaultViewport;
this.#process = process;
Expand All @@ -286,11 +295,18 @@ export class Browser extends EventEmitter {
return true;
});
this.#setIsPageTargetCallback(isPageTargetCallback);
this.#targetManager = new TargetManager(
connection,
this.#createTarget,
this.#targetFilterCallback
);
this.#targetManager =
product === 'chrome'
? new ChromeTargetManager(
connection,
this.#createTarget,
this.#targetFilterCallback
)
: new FirefoxTargetManager(
connection,
this.#createTarget,
this.#targetFilterCallback
);

this.#defaultContext = new BrowserContext(this.#connection, this);
this.#contexts = new Map();
Expand Down
5 changes: 4 additions & 1 deletion src/common/BrowserConnector.ts
Expand Up @@ -26,7 +26,7 @@ import {Connection} from './Connection.js';
import {ConnectionTransport} from './ConnectionTransport.js';
import {getFetch} from './fetch.js';
import {Viewport} from './PuppeteerViewport.js';

import {Product} from './Product.js';
/**
* Generic browser options that can be passed when launching any browser or when
* connecting to an existing browser instance.
Expand Down Expand Up @@ -75,6 +75,7 @@ export async function _connectToBrowser(
browserWSEndpoint?: string;
browserURL?: string;
transport?: ConnectionTransport;
product?: Product;
}
): Promise<Browser> {
const {
Expand All @@ -86,6 +87,7 @@ export async function _connectToBrowser(
slowMo = 0,
targetFilter,
_isPageTarget: isPageTarget,
product,
} = options;

assert(
Expand Down Expand Up @@ -114,6 +116,7 @@ export async function _connectToBrowser(
'Target.getBrowserContexts'
);
return Browser._create(
product || 'chrome',
connection,
browserContextIds,
ignoreHTTPSErrors,
Expand Down

0 comments on commit a0cec05

Please sign in to comment.