2022-02-24 18:14:04 +01:00
|
|
|
const child = require("child_process");
|
|
|
|
const fs = require("fs");
|
|
|
|
|
2023-11-29 19:53:48 +01:00
|
|
|
const { rimraf } = require("rimraf");
|
2022-02-24 18:14:04 +01:00
|
|
|
const gulp = require("gulp");
|
|
|
|
const gulpif = require("gulp-if");
|
|
|
|
const jeditor = require("gulp-json-editor");
|
|
|
|
const replace = require("gulp-replace");
|
|
|
|
|
|
|
|
const manifest = require("./src/manifest.json");
|
2024-08-15 16:54:18 +02:00
|
|
|
const manifestVersion = parseInt(process.env.MANIFEST_VERSION || manifest.version);
|
|
|
|
const betaBuild = process.env.BETA_BUILD === "1";
|
2016-09-08 00:51:36 +02:00
|
|
|
|
2017-11-08 03:45:18 +01:00
|
|
|
const paths = {
|
2021-12-21 15:43:35 +01:00
|
|
|
build: "./build/",
|
|
|
|
dist: "./dist/",
|
|
|
|
node_modules: "./node_modules/",
|
|
|
|
popupDir: "./src/popup/",
|
|
|
|
cssDir: "./src/popup/css/",
|
|
|
|
safari: "./src/safari/",
|
2017-11-08 03:45:18 +01:00
|
|
|
};
|
2016-09-08 00:51:36 +02:00
|
|
|
|
2018-01-11 23:33:13 +01:00
|
|
|
const filters = {
|
2021-12-21 15:43:35 +01:00
|
|
|
fonts: [
|
|
|
|
"!build/popup/fonts/*",
|
|
|
|
"build/popup/fonts/Open_Sans*.woff",
|
2022-02-02 16:11:09 +01:00
|
|
|
"build/popup/fonts/bwi-font.woff2",
|
|
|
|
"build/popup/fonts/bwi-font.woff",
|
|
|
|
"build/popup/fonts/bwi-font.ttf",
|
2021-12-21 15:43:35 +01:00
|
|
|
],
|
|
|
|
safari: ["!build/safari/**/*"],
|
2018-01-11 23:33:13 +01:00
|
|
|
};
|
2017-11-16 03:39:48 +01:00
|
|
|
|
2024-04-29 19:40:44 +02:00
|
|
|
/**
|
|
|
|
* Converts a number to a tuple containing two Uint16's
|
|
|
|
* @param num {number} This number is expected to be a integer style number with no decimals
|
|
|
|
*
|
|
|
|
* @returns {number[]} A tuple containing two elements that are both numbers.
|
|
|
|
*/
|
|
|
|
function numToUint16s(num) {
|
|
|
|
var arr = new ArrayBuffer(4);
|
|
|
|
var view = new DataView(arr);
|
|
|
|
view.setUint32(0, num, false);
|
|
|
|
return [view.getUint16(0), view.getUint16(2)];
|
|
|
|
}
|
|
|
|
|
2017-11-22 22:51:33 +01:00
|
|
|
function buildString() {
|
2021-12-21 15:43:35 +01:00
|
|
|
var build = "";
|
2022-08-18 18:07:02 +02:00
|
|
|
if (process.env.MANIFEST_VERSION) {
|
|
|
|
build = `-mv${process.env.MANIFEST_VERSION}`;
|
|
|
|
}
|
2024-08-15 16:54:18 +02:00
|
|
|
if (betaBuild) {
|
2024-04-26 21:15:36 +02:00
|
|
|
build += "-beta";
|
|
|
|
}
|
2021-12-21 15:43:35 +01:00
|
|
|
if (process.env.BUILD_NUMBER && process.env.BUILD_NUMBER !== "") {
|
|
|
|
build = `-${process.env.BUILD_NUMBER}`;
|
|
|
|
}
|
|
|
|
return build;
|
2017-11-22 22:51:33 +01:00
|
|
|
}
|
2017-11-18 04:04:34 +01:00
|
|
|
|
2017-11-22 22:51:33 +01:00
|
|
|
function distFileName(browserName, ext) {
|
2021-12-21 15:43:35 +01:00
|
|
|
return `dist-${browserName}${buildString()}.${ext}`;
|
2017-11-18 04:04:34 +01:00
|
|
|
}
|
|
|
|
|
2023-11-29 19:44:22 +01:00
|
|
|
async function dist(browserName, manifest) {
|
|
|
|
const { default: zip } = await import("gulp-zip");
|
|
|
|
const { default: filter } = await import("gulp-filter");
|
|
|
|
|
2021-12-21 15:43:35 +01:00
|
|
|
return gulp
|
|
|
|
.src(paths.build + "**/*")
|
|
|
|
.pipe(filter(["**"].concat(filters.fonts).concat(filters.safari)))
|
|
|
|
.pipe(gulpif("popup/index.html", replace("__BROWSER__", "browser_" + browserName)))
|
|
|
|
.pipe(gulpif("manifest.json", jeditor(manifest)))
|
|
|
|
.pipe(zip(distFileName(browserName, "zip")))
|
|
|
|
.pipe(gulp.dest(paths.dist));
|
2017-10-29 03:14:14 +01:00
|
|
|
}
|
|
|
|
|
2018-11-27 18:36:59 +01:00
|
|
|
function distFirefox() {
|
2021-12-21 15:43:35 +01:00
|
|
|
return dist("firefox", (manifest) => {
|
2024-08-15 16:54:18 +02:00
|
|
|
if (manifestVersion === 3) {
|
|
|
|
const backgroundScript = manifest.background.service_worker;
|
|
|
|
delete manifest.background.service_worker;
|
|
|
|
manifest.background.scripts = [backgroundScript];
|
|
|
|
}
|
2022-08-26 15:54:06 +02:00
|
|
|
delete manifest.storage;
|
[PM-4229] Autofill Overlay MVP (#6507)
* [PM-3914] Refactor Browser Extension Popouts
* [PM-3914] Refactor Browser Extension Popouts
* [PM-3914] Refactor Browser Extension Popouts
* [PM-3914] Adding enums for the browser popout type
* [PM-3914] Making the methods for getting a window in a targeted manner public
* [PM-3914] Refactoing implementation
* [PM-3914] Updating deprecated api call
* [PM-3914] Fixing issues found when testing behavior
* [PM-3914] Reimplementing behavior based on feedback from platform team
* [PM-3914] Adding method of ensuring previously opened single action window is force closed for vault item password reprompts
* [PM-3914] Taking into consideration feedback regarding the browser popup utils service and implementating requested changes
* [PM-3914] Removing unnecesssary class dependencies
* [PM-3914] Adding method for uniquely setting up password reprompt windows
* [PM-3914] Modifying method
* [PM-3914] Adding jest tests and documentation for AuthPopoutWindow util
* [PM-3914] Adding jest tests and documentation for VaultPopoutWindow
* [PM-3914] Adding jest tests for the debouncing method within autofill service
* [PM-3914] Adding jest tests for the new BrowserApi methods
* [PM-3914] Adding jest tests to the BrowserPopupUtils class
* [PM-3914] Updating inPrivateMode reference
* [PM-3914] Updating inPrivateMode reference
* [PM-3914] Modifying comment
* [PM-3914] Moviing implementation for openCurrentPagePopout to the BrowserPopupUtils
* [PM-3914] Applying feedback
* [PM-3914] Applying feedback
* [PM-3914] Applying feedback
* [PM-3983] Refactoring implementation of `setContentScrollY` to facilitate having a potential delay
* [PM-3914] Applying feedback regarding setContentScrollY to the implementation
* [PM-3914] Modifying early return within the run method of the ContextMenuClickedHandler
* [PM-3914] Adding test for VaultPopoutWindow
* [PM-4229] Autofill Overlay MVP
* [PM-2855] Add Settings to Enable Autofill Overlay (#6509)
* [PM-2855] Add Settings to Enable Autofill Overlay
* [PM-2855] Removing unnecessary key
* [PM-3914] Applying work done within PM-4366 to facilitate opening the popout window as a popup rather than a normal window
* [PM-3914] Updating the BrowserApi.removeTab method to leverage a callback structure for the promise rather than an async away structure
* [PM-3036] Adding jest tests for added passkeys popout windows
* [PM-3914] Adjsuting logic for turning off the warning when FIDO2 credentials are saved
* [PM-3914] Fixing height to design
* [PM-3914] Fixing call to Fido2 Popout
* [PM-3914] Fixing add/edit from fido2 popout
* [PM-3914] Fixing add/edit from fido2 popout
* [PM-3914] Fixing jest tests for updated elements
* [PM-3914] Reverting how context menu actions are passed to the view component
* [PM-3914] Reverting re-instantiation of config service within main.background.ts
* [PM-3914] Adding jest test for BrowserAPI removeTab method
* [PM-3914] Adding method to handle parsing the popout url path
* [PM-3914] Removing JSDOC comment elements
* [PM-3914] Removing await from method call
* [PM-3914] Simplifying implementation on add/edit
* [PM-3032] Adding more direct reference to view item action in context menus
* [PM-3034] Modify Autofill Callout to Consider Autofill Overlay Visibility (#6510)
* [PM-2855] Add Settings to Enable Autofill Overlay
* [PM-2855] Removing unnecessary key
* [PM-3034] Modify Autofill Callout to Consider Autofill Overlay Visibility
* [PM-3034] Adding translated strings
* [PM-3034] Updating boolean logic for showing the callout to remove unnecessary negation of boolean statement
* [PM-3914] Adjusting routing on Fido2 component to pass the singleActionPopout param to the route when opening the add-edit component
* [PM-3914] Adding singleActionPopout param to the fido2 component routing
* [PM-3914] Updating implementation details for how we build the extension url path
* [PM-3914] Reworking implementation for isSingleActionPopoutOpen to clean up iterative logic
* [PM-3914] Merging work from master and fixing merge conflicts
* [PM-3914] Fixing merge conflict introduced from master
* [PM-3914] Reworking closure of single action popouts to ensure they close the window instead of attempting to close the tab
* [PM-3036] Implement Autofill Overlay Unlock State (#6514)
* [PM-2855] Add Settings to Enable Autofill Overlay
* [PM-2855] Removing unnecessary key
* [PM-3034] Modify Autofill Callout to Consider Autofill Overlay Visibility
* [PM-3034] Adding translated strings
* [PM-3034] Add Autofill Overlay Vault Locked State
* [PM-3036] Bootstrap Autofill Overlay implementation and add locked vault state
* [PM-3032] Removing add/edit cipher message
* [PM-3036] Fixing lint error found within overlay background
* [PM-3036] Setting properties within the autofill component method to be protected
* [PM-3034] Updating boolean logic for showing the callout to remove unnecessary negation of boolean statement
* [PM-3036] Applying feedback from browser popout refactor PR
* [PM-3036] Adding ownership over the website icon service file to the autofill team
* [PM-3036] Updating the `autoFillOverlayVisibility` setting to be a client-scoped setting rather than account-scoped
* [PM-3036] Reworking jest setup implementation to facilitate approach recommended within code review
* [PM-3036] Updating WebsiteIconService to act as a single function reference and moving it to be under the vault team as codeowners
* [PM-3032] Show Matching Logins When User Interacts with Field (#6516)
* [PM-3032] Show Matching Logins When User Interacts with Field
* [PM-3032] Fixing issue found when changing pages
* [PM-3032] Addressing feedback within PR
* [PM-3032] Addressing feedback within PR
* [PM-3033] Allow User to Fill Matching Logins within Overlay (#6517)
* [PM-3033] Allow User to Fill Matching Logins within Overlay
* [PM-3035] Allow adding new items when no ciphers found in overlay (#6518)
* [PM-2319] Refactoring implementation to leverage styles within the encapsulated custom elements rather than inline on those elements
* [PM-2319] Leveraging globalThis to avoid potential DOM clobbering within implementation
* [PM-2319] Fixing issue where styles can override visibility of overlay icon and list
* [PM-2319] Fixing issue where styles can override visibility of overlay icon and list
* [PM-2319] Implementing more secure method for ensuring overlay is visible
* [PM-2319] Optimizing implementation of mutation observers on elements that need to enforce CSS styling
* [PM-2319] Refactoring how we handle mutation observers to allow for a more streamlined implementation approach
* [PM-2319] Implementing view cipher item initial workflow
* [PM-2319] Implementing obfruscation of username within login ciphers
* [PM-2747] Fixing logic error incorporated when merging in master
* [PM-2130] Fixing issue with autofill service unit tests
* [PM-2130] Fixing issue with autofill service unit tests
* [PM-2747] Fixing issue present with notification bar merge
* [PM-2130] Fixing test test for when we need to handle a password reprompt
* [PM-2319] Fixing issue present with context menu handler
* [PM-2319] Implementing fixes for password reprompt when autofilling from overlay
* [PM-2319] Working through accessibility and focus order on overlay elements
* [PM-2319] Finishing out focus redirection approach for focus out of overlay list
* [PM-2319] Working through screen reader accessibility including aria attributes
* [PM-2319] Adding guard to usage of extension privacy api
* [PM-2319] Adding guard to usage of extension privacy api
* [PM-2319] Adding aria description for fill cipher elements
* [PM-2319] Refactoring implementation
* [PM-2319] Working through implementation of view cipher tirggers when overlay set to view an element
* [PM-2319] Refining implementation for viewing vault item from overlay
* [PM-2319] Applying fix for context menu ciphers
* [PM-2319] Modifying namespace for overlay icon to overlay button
* [PM-2319] Refactoring OverlayButton
* [PM-2319] Refactoring OverlayButton
* [PM-2319] Adding translations for overlay content
* [PM-2319] Refactoring OverlayBackground class
* [PM-2319] Refactoring OverlayBackground class to more optimially store and retrieve cipher data for the overlay elements
* [PM-2319] Refactoring OverlayBackground class
* [PM-2319] Refactoring AutofillOverlayList class structure
* [PM-2319] Implementing randomization of custom element names for elements injected into tab
* [PM-2319] Updating how we handle referencing port messages within the OverlayIframe service
* [PM-3465] Optimization of CollectPageDetails Message within Autofill
* [PM-3465] Implementing caching for CollectPage details call
* [PM-3465] Implementing caching for CollectPage details call
* [PM-3465] Implementing method for ensuring that getPageDetails is not called when no fields appear within a frame
* [PM-3465] Implementing Mutation Observer to handle updating autofill fields when DOM updates
* [PM-2747] Fixing wording for webpack script
* [PM-2130] - Audit, Modularize, and Refactor Core autofill.js File (#5453)
* split up autofill.ts, first pass
* remove modification tracking comments
* lessen and localize eslint disables
* additional typing and formatting
* update autofill v2 with PR #5364 changes (update/i18n confirm dialogs)
* update autofill v2 with PR #4155 changes (add autofill support for textarea)
Co-Authored-By: Manuel <mr-manuel@outlook.it>
* move commonly used string values to constants
* ts cleanup
* [PM-2130] Starting work to re-architect autofillv2.ts
* [PM-2130] Starting work to re-architect autofillv2.ts
* [PM-2130] Working through autofill collect method
* [PM-2130] Marking Removal of documentUUID as dead code
* [PM-2130] Refining the implementation of collect and moving broken out utils back into class implementation
* [PM-2130] Applying small refactors to AutofillCollect
* [PM-2130] Refining the implementation of getAutofillFieldLabelTag to help with readability of the method
* [PM-2130] Implementing jest tests for AutofillCollect methods
* [PM-2130] Refining implementation for AutofillCollect
* [PM-2200] Unit tests for autofill content script utilities with slight refactors (#5544)
* add unit tests for urlNotSecure
* add test coverage command
* add unit tests for canSeeElementToStyle
* canSeeElementToStyle should not return true if `animateTheFilling` or `currentEl` is false
* add tests for selectAllFromDoc and getElementByOpId
* clean up getElementByOpId
* address some typing issues
* add tests for setValueForElementByEvent, setValueForElement, and doSimpleSetByQuery
* clean up setValueForElement and setValueForElementByEvent
* more typescript cleanup
* add tests for doClickByOpId and touchAllPasswordFields
* add tests for doFocusByOpId and doClickByQuery
* misc fill cleanup
* move functions between collect and fill utils and replace getElementForOPID for duplicate getElementByOpId
* add tests for isKnownTag and isElementVisible
* rename addProp and remove redundant focusElement in favor of doFocusElement
* cleanup
* fix checkNodeType
* add tests for shiftForLeftLabel
* clean up and rename checkNodeType, isKnownTag, and shiftForLeftLabel
* add tests for getFormElements
* clean up getFormElements
* add tests for getElementAttrValue, getElementValue, getSelectElementOptions, getLabelTop, and queryDoc
* clean up and rename queryDoc to queryDocument
* misc cleanup and rename getElementAttrValue to getPropertyOrAttribute
* rebase cleanup
* prettier formatting
* [PM-2130] Fixing linting issues
* [PM-2130] Fixing linting issues
* [PM-2130] Migrating implementation for collect methods and tests for those methods into AutofillCollect context
* [PM-2130] Migrating getPropertyOrAttribute method from utils to AutofillCollect
* [PM-2130] Continuing migration of methods from collect utils into AutofillCollect
* [PM-2130] Rework of isViewable method to better handle behavior for how we identify if an element is currently within the viewport
* [PM-2130] Filling out implementation of autofill-insert
* [PM-2130] Refining AutofillInsert
* [PM-2130] Implementing jest tests for AutofillCollect methods and breaking out visibility related logic to a separate service
* [PM-2130] Fixing jest tests for AutofillCollect
* [PM-2130] Fixing jest tests for AutofillInit
* [PM-2130] Adjusting how the AutofillFieldVisibilityService class is used in AutofillCollect
* [PM-2130] Working through AutofillInsert implementation
* [PM-2130] Migrating methods from fill.ts to AutofillInsert
* [PM-2130] Migrating methods from fill.ts to AutofillInsert
* [PM-2130] Applying fix for IntersectionObserver when triggering behavior in Safari and fixing issue with how we trigger an input event shortly after filling in a field
* [PM-2130] Refactoring AutofillCollect to service CollectAutofillContentService
* [PM-2130] Refactoring AutofillInsert to service InsertAutofillContentService
* [PM-2130] Further organization of implementation
* [PM-2130] Filling out missing jest test for AutofillInit.fillForm method
* [PM-2130] Migrating the last of the collect jest tests to InsertAutofillContentService
* [PM-2130] Further refactoring of elements including typing information
* [PM-2130] Implementing jest tests for InsertAutofillContentService
* [PM-2130] Implementing jest tests for InsertAutofillContentService
* [PM-2130] Organization and refactoring of methods within InsertAutofillContent
* [PM-2130] Implementation of jest tests for InsertAutofillContentService
* [PM-2130] Implementation of Jest Test for IntertAutofillContentService
* [PM-2130] Finalizing migration of methods and jest tests from util files into Autofill serivces
* [PM-2130] Cleaning up dead code comments
* [PM-2130] Removing unnecessary constants
* [PM-2130] Finalizing jest tests for InsertAutofillContentService
* [PM-2130] Refactoring FieldVisibiltyService to DomElementVisibilityService to allow service to act in a more general manner
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Breaking out the callback method used to resolve the IntersectionObserver promise
* [PM-2130] Adding a comment explaining a fix for Safari
* [PM-2130] Adding a comment explaining a fix for Safari
* [PM-2130] Applying changes required for PM-2762 to implementation, and ensuring jest tests exist to validate the behavior
* [PM-2130] Removing usage of IntersectionObserver when identifying element visibility due to broken interactions with React Components
* [PM-2130] Fixing issue found when attempting to capture the elementAtCenterPoint in determining file visibility
* [PM-2100] Create Unit Test Suite for autofill.service.ts (#5371)
* [PM-2100] Create Unit Test Suite for Autofill.service.ts
* [PM-2100] Finishing out tests for the getFormsWithPasswordFields method
* [PM-2100] Implementing tests for the doAutofill method within the autofill service
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Finishing implementatino of isUntrustedIframe method within autofill service
* [PM-2100] Finishing implementation of doAutoFill method within autofill service
* [PM-2100] Finishing implementation of doAutoFillOnTab method within autofill service
* [PM-2100] Working through tests for generateFillScript
* [PM-2100] Finalizing generateFillScript method testing
* [PM-2100] Starting implementation of generateLoginFillScript
* [PM-2100] Working through tests for generateLoginFillScript
* [PM-2100] Finalizing generateLoginFillScript method testing
* [PM-2100] Removing unnecessary jest config file
* [PM-2100] Fixing jest tests based on changes implemented within PM-2130
* [PM-2100] Fixing autofill mocks
* [PM-2100] Fixing AutofillService jest tests
* [PM-2100] Handling missing tests within coverage of AutofillService
* [PM-2100] Handling missing tests within coverage of AutofillService.generateLoginFillScript
* [PM-2100] Writing tests for AutofillService.generateCardFillScript
* [PM-2100] Finalizing tests for AutofillService.generateCardFillScript
* [PM-2100] Adding additional tests to cover changes introduced by TOTOP autofill PR
* [PM-2100] Adding jest tests for Autofill.generateIdentityFillScript
* [PM-2100] Finalizing tests for AutofillService.generateIdentityFillScript
* [PM-2100] Implementing tests for AutofillService
* [PM-2100] Implementing tests for AutofillService.loadPasswordFields
* [PM-2100] Implementing tests for AutofillService.findUsernameField
* [PM-2100] Implementing tests for AutofillService.findTotpField
* [PM-2100] Implementing tests for AutofillService.fieldPropertyIsPrefixMatch
* [PM-2100] Finalizing tests for AutofillService
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Removal of jest transform declaration
* [PM-2130] Fixing issue with autofill service unit tests
* [PM-2130] Fixing issue with autofill service unit tests
* [PM-2130] Fixing test test for when we need to handle a password reprompt
---------
Co-authored-by: Manuel <mr-manuel@outlook.it>
Co-authored-by: Cesar Gonzalez <cgonzalez@bitwarden.com>
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>
* [PM-2747] Finanlizing implementation of attribute updates on cached values
* [PM-2319] Refactoring implementation to reposition OverlayIframe classes
* [PM-3465] Finalizing implementation of mutation observer behavior and CollectPageDetails optimization
* [PM-3465] Adding jest tests for introduced functionality
* [PM-3465] Finalizing jest tests and comments within implementation
* [PM-3465] Removing a TODO by incorrporating a method for deep querying for a password field element
* [PM-3465] Removing a TODO by incorrporating a method for deep querying for a password field element
* [PM-3285] Migrating Changes from PM-1407 into autofill v2 refactor implementation
* [PM-2747] Addressing stylistic changes requested from code review
* [PM-2319] Refactoring implementation
* [PM-2747] Add Support for Feature Flag of Autofill Version (#5695)
* [PM-2100] Create Unit Test Suite for Autofill.service.ts
* [PM-2100] Finishing out tests for the getFormsWithPasswordFields method
* [PM-2100] Implementing tests for the doAutofill method within the autofill service
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Finishing implementatino of isUntrustedIframe method within autofill service
* [PM-2100] Finishing implementation of doAutoFill method within autofill service
* [PM-2100] Finishing implementation of doAutoFillOnTab method within autofill service
* [PM-2100] Working through tests for generateFillScript
* split up autofill.ts, first pass
* remove modification tracking comments
* lessen and localize eslint disables
* additional typing and formatting
* update autofill v2 with PR #5364 changes (update/i18n confirm dialogs)
* update autofill v2 with PR #4155 changes (add autofill support for textarea)
Co-Authored-By: Manuel <mr-manuel@outlook.it>
* move commonly used string values to constants
* ts cleanup
* [PM-2100] Finalizing generateFillScript method testing
* [PM-2100] Starting implementation of generateLoginFillScript
* [PM-2100] Working through tests for generateLoginFillScript
* [PM-2100] Finalizing generateLoginFillScript method testing
* [PM-2130] Starting work to re-architect autofillv2.ts
* [PM-2130] Starting work to re-architect autofillv2.ts
* [PM-2130] Working through autofill collect method
* [PM-2130] Marking Removal of documentUUID as dead code
* [PM-2130] Refining the implementation of collect and moving broken out utils back into class implementation
* [PM-2130] Applying small refactors to AutofillCollect
* [PM-2130] Refining the implementation of getAutofillFieldLabelTag to help with readability of the method
* [PM-2130] Implementing jest tests for AutofillCollect methods
* [PM-2130] Refining implementation for AutofillCollect
* [PM-2200] Unit tests for autofill content script utilities with slight refactors (#5544)
* add unit tests for urlNotSecure
* add test coverage command
* add unit tests for canSeeElementToStyle
* canSeeElementToStyle should not return true if `animateTheFilling` or `currentEl` is false
* add tests for selectAllFromDoc and getElementByOpId
* clean up getElementByOpId
* address some typing issues
* add tests for setValueForElementByEvent, setValueForElement, and doSimpleSetByQuery
* clean up setValueForElement and setValueForElementByEvent
* more typescript cleanup
* add tests for doClickByOpId and touchAllPasswordFields
* add tests for doFocusByOpId and doClickByQuery
* misc fill cleanup
* move functions between collect and fill utils and replace getElementForOPID for duplicate getElementByOpId
* add tests for isKnownTag and isElementVisible
* rename addProp and remove redundant focusElement in favor of doFocusElement
* cleanup
* fix checkNodeType
* add tests for shiftForLeftLabel
* clean up and rename checkNodeType, isKnownTag, and shiftForLeftLabel
* add tests for getFormElements
* clean up getFormElements
* add tests for getElementAttrValue, getElementValue, getSelectElementOptions, getLabelTop, and queryDoc
* clean up and rename queryDoc to queryDocument
* misc cleanup and rename getElementAttrValue to getPropertyOrAttribute
* rebase cleanup
* prettier formatting
* [PM-2130] Fixing linting issues
* [PM-2130] Fixing linting issues
* [PM-2130] Migrating implementation for collect methods and tests for those methods into AutofillCollect context
* [PM-2130] Migrating getPropertyOrAttribute method from utils to AutofillCollect
* [PM-2130] Continuing migration of methods from collect utils into AutofillCollect
* [PM-2130] Rework of isViewable method to better handle behavior for how we identify if an element is currently within the viewport
* [PM-2130] Filling out implementation of autofill-insert
* [PM-2130] Refining AutofillInsert
* [PM-2130] Implementing jest tests for AutofillCollect methods and breaking out visibility related logic to a separate service
* [PM-2130] Fixing jest tests for AutofillCollect
* [PM-2130] Fixing jest tests for AutofillInit
* [PM-2130] Adjusting how the AutofillFieldVisibilityService class is used in AutofillCollect
* [PM-2130] Working through AutofillInsert implementation
* [PM-2130] Migrating methods from fill.ts to AutofillInsert
* [PM-2130] Migrating methods from fill.ts to AutofillInsert
* [PM-2130] Applying fix for IntersectionObserver when triggering behavior in Safari and fixing issue with how we trigger an input event shortly after filling in a field
* [PM-2130] Refactoring AutofillCollect to service CollectAutofillContentService
* [PM-2130] Refactoring AutofillInsert to service InsertAutofillContentService
* [PM-2130] Further organization of implementation
* [PM-2130] Filling out missing jest test for AutofillInit.fillForm method
* [PM-2130] Migrating the last of the collect jest tests to InsertAutofillContentService
* [PM-2130] Further refactoring of elements including typing information
* [PM-2130] Implementing jest tests for InsertAutofillContentService
* [PM-2130] Implementing jest tests for InsertAutofillContentService
* [PM-2130] Organization and refactoring of methods within InsertAutofillContent
* [PM-2130] Implementation of jest tests for InsertAutofillContentService
* [PM-2130] Implementation of Jest Test for IntertAutofillContentService
* [PM-2130] Finalizing migration of methods and jest tests from util files into Autofill serivces
* [PM-2130] Cleaning up dead code comments
* [PM-2130] Removing unnecessary constants
* [PM-2130] Finalizing jest tests for InsertAutofillContentService
* [PM-2130] Refactoring FieldVisibiltyService to DomElementVisibilityService to allow service to act in a more general manner
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Implementing jest tests for DomElementVisibilityService
* [PM-2130] Breaking out the callback method used to resolve the IntersectionObserver promise
* [PM-2100] Removing unnecessary jest config file
* [PM-2100] Fixing jest tests based on changes implemented within PM-2130
* [PM-2100] Fixing autofill mocks
* [PM-2100] Fixing AutofillService jest tests
* [PM-2100] Handling missing tests within coverage of AutofillService
* [PM-2100] Handling missing tests within coverage of AutofillService.generateLoginFillScript
* [PM-2100] Writing tests for AutofillService.generateCardFillScript
* [PM-2100] Finalizing tests for AutofillService.generateCardFillScript
* [PM-2100] Adding additional tests to cover changes introduced by TOTOP autofill PR
* [PM-2100] Adding jest tests for Autofill.generateIdentityFillScript
* [PM-2100] Finalizing tests for AutofillService.generateIdentityFillScript
* [PM-2100] Implementing tests for AutofillService
* [PM-2130] Adding a comment explaining a fix for Safari
* [PM-2130] Adding a comment explaining a fix for Safari
* [PM-2100] Implementing tests for AutofillService.loadPasswordFields
* [PM-2100] Implementing tests for AutofillService.findUsernameField
* [PM-2100] Implementing tests for AutofillService.findTotpField
* [PM-2100] Implementing tests for AutofillService.fieldPropertyIsPrefixMatch
* [PM-2100] Finalizing tests for AutofillService
* [PM-2747] Add Support for Feature Flag of Autofill Version
* [PM-2747] Adding Support for Manifest v3 within the implementation
* [PM-2747] Modifying how the feature flag for autofill is named
* [PM-2747] Modifying main.background.ts to load the ConfigApiService correctly
* [PM-2747] Refactoring trigger of autofill scripts to be a simple immediately invoked function
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Removal of jest transform declaration
* [PM-2130] Applying changes required for PM-2762 to implementation, and ensuring jest tests exist to validate the behavior
* [PM-2747] Modifying how we inject the autofill scripts to ensure we are injecting into all frames within a page
* [PM-2130] Removing usage of IntersectionObserver when identifying element visibility due to broken interactions with React Components
* [PM-2130] Fixing issue found when attempting to capture the elementAtCenterPoint in determining file visibility
* [PM-2100] Create Unit Test Suite for autofill.service.ts (#5371)
* [PM-2100] Create Unit Test Suite for Autofill.service.ts
* [PM-2100] Finishing out tests for the getFormsWithPasswordFields method
* [PM-2100] Implementing tests for the doAutofill method within the autofill service
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Working through implementation of doAutofill method
* [PM-2100] Finishing implementatino of isUntrustedIframe method within autofill service
* [PM-2100] Finishing implementation of doAutoFill method within autofill service
* [PM-2100] Finishing implementation of doAutoFillOnTab method within autofill service
* [PM-2100] Working through tests for generateFillScript
* [PM-2100] Finalizing generateFillScript method testing
* [PM-2100] Starting implementation of generateLoginFillScript
* [PM-2100] Working through tests for generateLoginFillScript
* [PM-2100] Finalizing generateLoginFillScript method testing
* [PM-2100] Removing unnecessary jest config file
* [PM-2100] Fixing jest tests based on changes implemented within PM-2130
* [PM-2100] Fixing autofill mocks
* [PM-2100] Fixing AutofillService jest tests
* [PM-2100] Handling missing tests within coverage of AutofillService
* [PM-2100] Handling missing tests within coverage of AutofillService.generateLoginFillScript
* [PM-2100] Writing tests for AutofillService.generateCardFillScript
* [PM-2100] Finalizing tests for AutofillService.generateCardFillScript
* [PM-2100] Adding additional tests to cover changes introduced by TOTOP autofill PR
* [PM-2100] Adding jest tests for Autofill.generateIdentityFillScript
* [PM-2100] Finalizing tests for AutofillService.generateIdentityFillScript
* [PM-2100] Implementing tests for AutofillService
* [PM-2100] Implementing tests for AutofillService.loadPasswordFields
* [PM-2100] Implementing tests for AutofillService.findUsernameField
* [PM-2100] Implementing tests for AutofillService.findTotpField
* [PM-2100] Implementing tests for AutofillService.fieldPropertyIsPrefixMatch
* [PM-2100] Finalizing tests for AutofillService
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Modyfing placement of autofill-mocks
* [PM-2100] Removal of jest transform declaration
* [PM-2747] Applying a fix for a race condition that can occur when loading the notification bar and autofiller script login
* [PM-2747] Reverting removal of autofill npm action. Now this will force usage of autofill-v2 regardless of whether a feature flag is set or not
* [PM-2747] Fixing logic error incorporated when merging in master
* [PM-2130] Fixing issue with autofill service unit tests
* [PM-2130] Fixing issue with autofill service unit tests
* [PM-2747] Fixing issue present with notification bar merge
* [PM-2130] Fixing test test for when we need to handle a password reprompt
* [PM-2747] Fixing wording for webpack script
* [PM-2747] Addressing stylistic changes requested from code review
* [PM-2747] Addressing stylistic changes requested from code review
---------
Co-authored-by: Jonathan Prusik <jprusik@classynemesis.com>
Co-authored-by: Manuel <mr-manuel@outlook.it>
Co-authored-by: Jonathan Prusik <jprusik@users.noreply.github.com>
* [PM-3285] Applying stylistic changes suggested by code review for the feature flag implementation
* [PM-3285] Adding temporary console log to validate which version is being used
* [PM-2319] Adjusting translation content
* [PM-3465] Implementing a methodology for sorting the autofill field elements after awaiting the results of each element
* [PM-3465] Implementing a methodology for sorting the autofill field elements after awaiting the results of each element
* [PM-3465] Implementing a methodology for using cached field values when requerying DOM for elements
* [PM-2319] Adjusting translation content
* [PM-2319] Adding typing information for OverlayBackground
* [PM-2319] Removing unnecesssary methods within OverlayBackground and AutofillOverlayContentService
* [PM-2319] Refactoring implementation and incorpoarting BrowserApi class more effectively
* [PM-2319] Fixing issue found with opening overaly element during reprompt of vault item
* [PM-2319] Fixing issue found with auth status not updating when overlay is initializing
* [PM-2319] Implementing a method for initializing the overlay with the user auth status
* [PM-2319] Fixing issue where shadowRoot elements might not initialize overlay on setup
* [PM-2319] Implementing await for runFillScriptAction
* [PM-2319] Implementing methodology for having list of elements hide after user starts inputting within field
* [PM-2319] Removing unnecesssary methods within OverlayBackground and AutofillOverlayContentService
* [PM-2319] Fixing tab focus issue
* [PM-2319] Fixing issue where page details would unload sooner than desired
* [PM-2319] Fixing tab focus issues present on page details
* [PM-2319] Adjusting how we iterate over cipher data
* [PM-2319] Refactoring overlay background
* [PM-2319] Adding typing information for OverlayBackground
* [PM-2319] Adding typing information for OverlayBackground
* [PM-2319] Refactoring and optimizing for loops
* [PM-2319] Refactoring and optimizing how we listen for overlay element ports
* [PM-2319] Implementing method for ensuring overlay removes itself if user scrolls focused input element out of viewport
* [PM-2319] Replacing usage of foreach for a regular for loop
* [PM-2319] Replacing usage of foreach for a regular for loop
* [PM-2319] Refactoring forEach loops within CollectAutofillContent and moving autofill utils to a top level
* [PM-2319] Refactoring getRandomCustomElementName util method
* [PM-2319] Refactoring implementation
* [PM-2319] Refactoring implementation
* [PM-2319] Replacing hardcoded values for events with constant enum
* [PM-2319] Adding reduced animation declaration for fill
* [PM-2319] Adjusting implementation of mutation observer to better handle insertion of elements around overlay
* [PM-2319] Fixing jest test
* [PM-2319] Implementing method for ensuring tab focus from the overlay button can move to the correct place
* [PM-2319] Refactoring implementation
* [PM-3285] Removing temporary console log indicating which version of autofill the user is currently loading
* [PM-3465] Adding scripting api reference to the manifest v3 json file
* [PM-2319] Splitting shared logic within the overlay page implementations to act as a parent class for the overlay button and list pages
* [PM-2319] Updating file names for page scripts
* [PM-2319] Updating file names for page scripts
* [PM-2319] Fixing issues present with overlay background when updating auth status
* [PM-2319] Refactoring implementation
* [PM-2319] Fixing cache invalidation issues present with the collect page details optimization
* [PM-3465] Updating implementation to deal with cache invalidation issues
* [PM-3465] Implementing jest tests for added collect autofill content class elements
* [PM-3465] Removing scripting API permissiong within manifest v3 json file
* [PM-2319] Adding scripting api to manifest v3
* [PM-2319] Fixing issue present with non visible fields having an overlay element
* [PM-3465] Implementing method for removing cached page details if the window location has updated
* [PM-3465] Fixing issue found with query selector generated while collecting page details
* [PM-2319] Commenting out code that overrides default browser autofill behavior in chrome
* [PM-3465] Fixing jest tests
* [PM-3465] Fixing jest tests
* [PM-2319] Adding typing information for OverlayBackground
* [PM-2319] Updating typing information for the Overlay Background
* [PM-2319] Adding typing information for notification changes
* [PM-2319] Finalizing OverlayBackground typing info and removing browser autofill override method
* [PM-2319] Refining typing information within different service classes
* [PM-2319] Finalizing typing information within implementation
* [PM-2319] Further refinement and fixes for icon element
* [PM-2319] Fixing issue where submission of form and presentation of notification bar can offset the overlay element
* [PM-2319] Fixing issues present with keyboard focus and determining when to open the overlay upon user interaction
* [PM-2319] Adding in change to fix issue where autofill is occurring when iframes exist
* [PM-2319] Implementing lazy load of UI elements
* [PM-2319] Fixing issue present with lazy loading of cipher elements
* [PM-2319] Fixing issue present with lazy loading of cipher elements
* [PM-2319] Modifying offset for the ciphers list container
* [PM-2319] Fixing issue encountered with autofilling using keyboard
* [PM-2319] Modifying initialization of iframe element
* [PM-2319] Fixing an issue where login ciphers that do not contain a user name will not display within the overlay list
* [PM-2855] [PM-3034] Add Setting to Enable Autofill Overlay (#6194)
* [PM-2855] Add Settings to Enable Autofil Overlay
* [PM-2855] Adding feature flag for overlay
* [PM-2855] Implementing autofill overlay setting within browser extension
* [PM-2855] Implementing autofill overlay appearance setting
* [PM-2855] Implementing behavior within autofill overlay to conditionally display either the icon or the full list on focus of an element
* [PM-2855] Implementing a fix for when focus changes with the form field visible
* [PM-2855] Modifying rules for how the callout appears within the current-tab component
* [PM-2855] Modifying enum for autofill overlay appearance
* [PM-2855] Implementing check to ensure autofill overlay setting is not visible if the feature flag is not set
* [PM-2855] Fixing jest tests within implementation
* [PM-2855] Modifying how we pull the overlay appearance information for the end user
* [PM-2855] Applying changes to the structure for how the overlay settings are identified and verified
* [PM-2855] Applying changes to the structure for how the overlay settings are identified and verified
* [PM-2855] Adding translations content
* [PM-2855] Modifying implementation for how autofill settings populate and present themselves
* [PM-2855] Modifying implementation for how autofill settings populate and present themselves
* [PM-2855] Adding the ability to override autofill permissions within Chrome as an opt-in
* [PM-2855] Modifying message sent when vault item reprompt popout is opened
* [PM-2855] Fixing issue encountered with how we handle lazy loading vaul items
* [PM-2855] Fixing issue present when iframe is updating position when the window focus changes
* [PM-3982] Implement Autofill Overlay unit tests (#6337)
* [PM-2319] Jest Tests for Autofill Overlay MVP
* [PM-2319] Jest test stubs for OverlayBackground
* add tests and cleanup (#6341)
* [PM-3983] Implementing test for `updateAutofillOverlayCiphers`
* [PM-3983] Implementing test for `updateAutofillOverlayCiphers`
* [PM-3983] Working through jest tests for overlay background
* [PM-3983] Adding jest tests for OverlayBackground
* [PM-3983] Adding jest tests for OverlayBackground;
* [PM-3983] Adding jest tests for getAuthStatus
* [PM-3983] Adding jest tests for getAuthStatus
* [PM-3983] Adding jest tests for getTranslations
* [PM-3983] Finalizing jest tests for OverlayBackground
* [PM-3983] Finalizing jest tests for OverlayBackground
* [PM-3982] Updating unit tests within AutofillInit
* [PM-3982] Adding jest tests for AutofillOverlayIframeElement, AutofillOverlayButtonIframe, and AutofillOverlayListIframe
* [PM-3982] Adding jest tests for the AutofillOverlayIframeService class
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3992] AutofillOverlayContentService class unit tests
* [PM-3982] Filling out unit tests for the AutofillService class
* [PM-3982] Implementing unit tests for the AutofillOverlayPageElement custom element class
* [PM-3982] Updating elements to better allow for testing of the AutofillOverlayList and AutofillOverlayButton classes
* [PM-3982] Adding jest tests for AutofillOverlayList custom element class
* [PM-3982] Adding jest tests for AutofillOverlayList custom element class
* [PM-3982] Adding jest tests for the AutofillOverlayButton custom element class
* [PM-3982] Adding jest tests for the AutofillOverlayButton custom element class
* [PM-3982] Updating obsolete snapshot
* add tests for AutofillOverlayIframeService
* [PM-3982] Refactoring
* [PM-3982] Refactoring
---------
Co-authored-by: Jonathan Prusik <jprusik@users.noreply.github.com>
Co-authored-by: Jonathan Prusik <jprusik@classynemesis.com>
---------
Co-authored-by: Jonathan Prusik <jprusik@users.noreply.github.com>
Co-authored-by: Jonathan Prusik <jprusik@classynemesis.com>
* [PM-2319] Adjusting implementation for how we open the unlock popout to facilitate skipping the notification
* [PM-2319] Adjusting typing information within the OverlayBackground class and fixing issue found within the AutofillOverlayList implementation
* [PM-2319] Adjusting JSDOC comment within NotificationBackground
* [PM-2319] Refactoring OverlayBackground tests
* [PM-2319] Refactoring OverlayBackground tests
* [PM-2319] Refactoring JSDOC comments
* [PM-2319] Adding jest tests to modified TabsBackground class
* [PM-2319] Refactoring jest tests for AutofillInit
* [PM-2319] Refactoring AutofillInit JSDOC messages
* [PM-2319] Applying refactors to AutofillInit
* [PM-2319] Applying refactors to fying info for the AutofillOverlayIframeService
* [PM-2319] Adding the ability to apply the extension theme to the overlay elements
* [PM-2319] Adjusting background offset on darker themes
* [PM-2319] Adjusting background offset on darker themes
* [PM-2319] Adding JSDOC comments to the overlay iframe service
* [PM-2319] Cleaning up implementation
* [PM-2319] Cleaning up implementation
* [PM-2319] Adding removal of unknown manifest key, `sandbox`, from the Firefox manifest
* [PM-2319] Updating manifest v3 implementation to facilitate presentation of the overlay page elements
* [PM-2319] Adding documentation to the changes to BrowserApi
* [PM-2855] Removing unnecessary key
* [PM-2319] Removing unnecesssary abstraction file
* [PM-3035] Reverting changes to package-lock.json
* [PM-3035] Reverting changes to package-lock.json
* [PM-3035] Reverting added logs
---------
Co-authored-by: Jonathan Prusik <jprusik@users.noreply.github.com>
Co-authored-by: Manuel <mr-manuel@outlook.it>
Co-authored-by: Jonathan Prusik <jprusik@classynemesis.com>
---------
Co-authored-by: Jonathan Prusik <jprusik@users.noreply.github.com>
Co-authored-by: Manuel <mr-manuel@outlook.it>
Co-authored-by: Jonathan Prusik <jprusik@classynemesis.com>
* [PM-3032] Fixing issue with flashing background on overlay iframe list element
* [PM-3032] Modifying how we determine the size of the overlay button element to facilitate smaller scaling on larger sized input elements
* [PM-3032] Modifying how load actions are handled within the browser view component to clarify the triggered logic.
* [PM-3032] Adjusting implementation to how we trigger copy actions
* [PM-3032] Setting copyActions to be a static member of the view component class
* [PM-3032] Merging in changes
---------
Co-authored-by: Jonathan Prusik <jprusik@users.noreply.github.com>
Co-authored-by: Manuel <mr-manuel@outlook.it>
Co-authored-by: Jonathan Prusik <jprusik@classynemesis.com>
---------
Co-authored-by: Jonathan Prusik <jprusik@users.noreply.github.com>
Co-authored-by: Manuel <mr-manuel@outlook.it>
Co-authored-by: Jonathan Prusik <jprusik@classynemesis.com>
* [PM-3914] Fixing issue within Opera where lock and login routes can persist if user opens the extension popout in a new window before locking or logging out
* [PM-3914] Setting the extensionUrls that are cheked as a variable outside of the scope fo the openUlockPopout method to ensure it does not have to be rebuilt each time the method is called
* [PM-4744] Page Details that Update after Mutation Observer has Triggered Do Not Update within Overlay Background (#6848)
* [PM-4743] Windows Chromium Browser is Not Updating Overlay Ciphers on Tab Update (#6863)
* [PM-4763] Fixing Issues with the Overlay UI Positioning and Presentation (#6864)
* [PM-4763] Fixing overlay UI issues
* [PM-4736] Implementing a method to ensure that the overlay is refreshed anytime the overlay has lost visibility
* [PM-4763] Implementing a fix for a delayed opening of the overlay element where elements in the documentElement could potentially overlay our own UI element
* [PM-4763] Implementing a fix for when the visibility of the dom changes to facilitate removing the overlay element if necessary
* [PM-4763] Fixing jest tests
* [PM-4763] Fixing global references
* [PM-4790] Overlay not resetting on scroll of websites that do not scroll body element (#6877)
* [PM-4790] Overlay not resetting on scroll of websites that do not scrollt he body element
* [PM-4790] Setting up the scroll event to capture rather than setting mousewheel and touchmove events
* [PM-4790] Setting up constants for referenced events
* [PM-4229] Fixing issue found when collecting page details
* [PM-4229] Implementing optimization to ensure we only rebuild the autofill item if the overlay needs to set the listeners on the field
* [PM-4229] Adjusting copy for autofill callout message
---------
Co-authored-by: Jonathan Prusik <jprusik@users.noreply.github.com>
Co-authored-by: Manuel <mr-manuel@outlook.it>
Co-authored-by: Jonathan Prusik <jprusik@classynemesis.com>
2023-11-20 19:34:04 +01:00
|
|
|
delete manifest.sandbox;
|
2024-01-23 20:23:08 +01:00
|
|
|
manifest.optional_permissions = manifest.optional_permissions.filter(
|
|
|
|
(permission) => permission !== "privacy",
|
|
|
|
);
|
2024-08-15 16:54:18 +02:00
|
|
|
if (betaBuild) {
|
2024-04-26 21:15:36 +02:00
|
|
|
manifest = applyBetaLabels(manifest);
|
|
|
|
}
|
2021-12-21 15:43:35 +01:00
|
|
|
return manifest;
|
|
|
|
});
|
2018-11-27 18:36:59 +01:00
|
|
|
}
|
2017-10-29 03:14:14 +01:00
|
|
|
|
2018-11-27 18:36:59 +01:00
|
|
|
function distOpera() {
|
2021-12-21 15:43:35 +01:00
|
|
|
return dist("opera", (manifest) => {
|
|
|
|
delete manifest.applications;
|
2024-08-15 16:54:18 +02:00
|
|
|
|
|
|
|
// Mv3 on Opera does seem to have sidebar support, however it is not working as expected.
|
|
|
|
// On install, the extension will crash the browser entirely if the sidebar_action key is set.
|
|
|
|
// We will remove the sidebar_action key for now until opera implements a fix.
|
|
|
|
if (manifestVersion === 3) {
|
|
|
|
delete manifest.sidebar_action;
|
|
|
|
delete manifest.commands._execute_sidebar_action;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (betaBuild) {
|
2024-04-26 21:15:36 +02:00
|
|
|
manifest = applyBetaLabels(manifest);
|
|
|
|
}
|
2021-12-21 15:43:35 +01:00
|
|
|
return manifest;
|
|
|
|
});
|
2018-11-27 18:36:59 +01:00
|
|
|
}
|
2017-10-29 03:14:14 +01:00
|
|
|
|
2018-11-27 18:36:59 +01:00
|
|
|
function distChrome() {
|
2021-12-21 15:43:35 +01:00
|
|
|
return dist("chrome", (manifest) => {
|
|
|
|
delete manifest.applications;
|
|
|
|
delete manifest.sidebar_action;
|
|
|
|
delete manifest.commands._execute_sidebar_action;
|
2024-08-15 16:54:18 +02:00
|
|
|
if (betaBuild) {
|
2024-04-26 21:15:36 +02:00
|
|
|
manifest = applyBetaLabels(manifest);
|
|
|
|
}
|
2021-12-21 15:43:35 +01:00
|
|
|
return manifest;
|
|
|
|
});
|
2020-03-05 17:13:55 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
function distEdge() {
|
2021-12-21 15:43:35 +01:00
|
|
|
return dist("edge", (manifest) => {
|
|
|
|
delete manifest.applications;
|
|
|
|
delete manifest.sidebar_action;
|
|
|
|
delete manifest.commands._execute_sidebar_action;
|
2024-08-15 16:54:18 +02:00
|
|
|
if (betaBuild) {
|
2024-04-26 21:15:36 +02:00
|
|
|
manifest = applyBetaLabels(manifest);
|
|
|
|
}
|
2021-12-21 15:43:35 +01:00
|
|
|
return manifest;
|
|
|
|
});
|
2018-11-27 18:36:59 +01:00
|
|
|
}
|
2017-10-29 03:14:14 +01:00
|
|
|
|
2019-10-01 23:28:12 +02:00
|
|
|
function distSafariMas(cb) {
|
2021-12-21 15:43:35 +01:00
|
|
|
return distSafariApp(cb, "mas");
|
2019-10-01 23:28:12 +02:00
|
|
|
}
|
|
|
|
|
2019-10-02 15:30:56 +02:00
|
|
|
function distSafariMasDev(cb) {
|
2021-12-21 15:43:35 +01:00
|
|
|
return distSafariApp(cb, "masdev");
|
2019-10-02 15:30:56 +02:00
|
|
|
}
|
|
|
|
|
2019-10-01 23:28:12 +02:00
|
|
|
function distSafariDmg(cb) {
|
2021-12-21 15:43:35 +01:00
|
|
|
return distSafariApp(cb, "dmg");
|
2019-10-01 23:28:12 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
function distSafariApp(cb, subBuildPath) {
|
2021-12-21 15:43:35 +01:00
|
|
|
const buildPath = paths.dist + "Safari/" + subBuildPath + "/";
|
|
|
|
const builtAppexPath = buildPath + "build/Release/safari.appex";
|
|
|
|
const builtAppexFrameworkPath = buildPath + "build/Release/safari.appex/Contents/Frameworks/";
|
|
|
|
const entitlementsPath = paths.safari + "safari/safari.entitlements";
|
|
|
|
var args = [
|
|
|
|
"--verbose",
|
|
|
|
"--force",
|
|
|
|
"-o",
|
|
|
|
"runtime",
|
|
|
|
"--sign",
|
|
|
|
"Developer ID Application: 8bit Solutions LLC",
|
|
|
|
"--entitlements",
|
|
|
|
entitlementsPath,
|
|
|
|
];
|
|
|
|
if (subBuildPath !== "dmg") {
|
|
|
|
args = [
|
|
|
|
"--verbose",
|
|
|
|
"--force",
|
|
|
|
"--sign",
|
|
|
|
subBuildPath === "mas"
|
2023-02-13 23:49:03 +01:00
|
|
|
? "3rd Party Mac Developer Application: Bitwarden Inc"
|
2024-02-05 16:22:07 +01:00
|
|
|
: "E7C9978F6FBCE0553429185C405E61F5380BE8EB",
|
2021-12-21 15:43:35 +01:00
|
|
|
"--entitlements",
|
|
|
|
entitlementsPath,
|
2019-10-02 15:30:56 +02:00
|
|
|
];
|
2021-12-21 15:43:35 +01:00
|
|
|
}
|
|
|
|
|
2023-11-29 19:53:48 +01:00
|
|
|
return rimraf([buildPath + "**/*"], { glob: true })
|
2021-12-21 15:43:35 +01:00
|
|
|
.then(() => safariCopyAssets(paths.safari + "**/*", buildPath))
|
|
|
|
.then(() => safariCopyBuild(paths.build + "**/*", buildPath + "safari/app"))
|
|
|
|
.then(() => {
|
|
|
|
const proc = child.spawn("xcodebuild", [
|
|
|
|
"-project",
|
|
|
|
buildPath + "desktop.xcodeproj",
|
|
|
|
"-alltargets",
|
|
|
|
"-configuration",
|
|
|
|
"Release",
|
|
|
|
]);
|
|
|
|
stdOutProc(proc);
|
|
|
|
return new Promise((resolve) => proc.on("close", resolve));
|
|
|
|
})
|
2023-11-29 19:44:22 +01:00
|
|
|
.then(async () => {
|
|
|
|
const { default: filter } = await import("gulp-filter");
|
|
|
|
|
2021-12-21 15:43:35 +01:00
|
|
|
const libs = fs
|
|
|
|
.readdirSync(builtAppexFrameworkPath)
|
|
|
|
.filter((p) => p.endsWith(".dylib"))
|
|
|
|
.map((p) => builtAppexFrameworkPath + p);
|
|
|
|
const libPromises = [];
|
|
|
|
libs.forEach((i) => {
|
|
|
|
const proc = child.spawn("codesign", args.concat([i]));
|
|
|
|
stdOutProc(proc);
|
|
|
|
libPromises.push(new Promise((resolve) => proc.on("close", resolve)));
|
|
|
|
});
|
|
|
|
return Promise.all(libPromises);
|
|
|
|
})
|
|
|
|
.then(() => {
|
|
|
|
const proc = child.spawn("codesign", args.concat([builtAppexPath]));
|
|
|
|
stdOutProc(proc);
|
|
|
|
return new Promise((resolve) => proc.on("close", resolve));
|
|
|
|
})
|
|
|
|
.then(
|
|
|
|
() => {
|
|
|
|
return cb;
|
|
|
|
},
|
|
|
|
() => {
|
|
|
|
return cb;
|
2023-11-29 22:15:20 +01:00
|
|
|
},
|
2021-12-21 15:43:35 +01:00
|
|
|
);
|
2019-10-01 23:28:12 +02:00
|
|
|
}
|
|
|
|
|
2019-08-22 16:39:42 +02:00
|
|
|
function safariCopyAssets(source, dest) {
|
2021-12-21 15:43:35 +01:00
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
gulp
|
|
|
|
.src(source)
|
|
|
|
.on("error", reject)
|
|
|
|
.pipe(gulpif("safari/Info.plist", replace("0.0.1", manifest.version)))
|
|
|
|
.pipe(
|
2023-11-29 22:15:20 +01:00
|
|
|
gulpif("safari/Info.plist", replace("0.0.2", process.env.BUILD_NUMBER || manifest.version)),
|
2021-12-21 15:43:35 +01:00
|
|
|
)
|
|
|
|
.pipe(gulpif("desktop.xcodeproj/project.pbxproj", replace("../../../build", "../safari/app")))
|
|
|
|
.pipe(gulp.dest(dest))
|
|
|
|
.on("end", resolve);
|
|
|
|
});
|
2019-08-22 16:39:42 +02:00
|
|
|
}
|
|
|
|
|
2023-11-29 19:44:22 +01:00
|
|
|
async function safariCopyBuild(source, dest) {
|
|
|
|
const { default: filter } = await import("gulp-filter");
|
|
|
|
|
2021-12-21 15:43:35 +01:00
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
gulp
|
|
|
|
.src(source)
|
|
|
|
.on("error", reject)
|
|
|
|
.pipe(filter(["**"].concat(filters.fonts)))
|
|
|
|
.pipe(gulpif("popup/index.html", replace("__BROWSER__", "browser_safari")))
|
|
|
|
.pipe(
|
|
|
|
gulpif(
|
|
|
|
"manifest.json",
|
|
|
|
jeditor((manifest) => {
|
2024-08-15 16:54:18 +02:00
|
|
|
if (manifestVersion === 3) {
|
|
|
|
const backgroundScript = manifest.background.service_worker;
|
|
|
|
delete manifest.background.service_worker;
|
|
|
|
manifest.background.scripts = [backgroundScript];
|
|
|
|
}
|
2022-09-08 14:48:45 +02:00
|
|
|
delete manifest.sidebar_action;
|
|
|
|
delete manifest.commands._execute_sidebar_action;
|
2021-12-21 15:43:35 +01:00
|
|
|
delete manifest.optional_permissions;
|
|
|
|
manifest.permissions.push("nativeMessaging");
|
2024-08-15 16:54:18 +02:00
|
|
|
if (betaBuild) {
|
2024-04-26 21:15:36 +02:00
|
|
|
manifest = applyBetaLabels(manifest);
|
|
|
|
}
|
2021-12-21 15:43:35 +01:00
|
|
|
return manifest;
|
2023-11-29 22:15:20 +01:00
|
|
|
}),
|
|
|
|
),
|
2021-12-21 15:43:35 +01:00
|
|
|
)
|
|
|
|
.pipe(gulp.dest(dest))
|
|
|
|
.on("end", resolve);
|
|
|
|
});
|
2019-08-02 22:09:59 +02:00
|
|
|
}
|
|
|
|
|
2019-08-26 18:13:08 +02:00
|
|
|
function stdOutProc(proc) {
|
2021-12-21 15:43:35 +01:00
|
|
|
proc.stdout.on("data", (data) => console.log(data.toString()));
|
|
|
|
proc.stderr.on("data", (data) => console.error(data.toString()));
|
2019-08-26 18:15:52 +02:00
|
|
|
}
|
2019-08-26 18:13:08 +02:00
|
|
|
|
2024-04-26 21:15:36 +02:00
|
|
|
function applyBetaLabels(manifest) {
|
|
|
|
manifest.name = "Bitwarden Password Manager BETA";
|
|
|
|
manifest.short_name = "Bitwarden BETA";
|
|
|
|
manifest.description = "THIS EXTENSION IS FOR BETA TESTING BITWARDEN.";
|
|
|
|
if (process.env.GITHUB_RUN_ID) {
|
2024-04-29 19:40:44 +02:00
|
|
|
const existingVersionParts = manifest.version.split("."); // 3 parts expected 2024.4.0
|
|
|
|
|
|
|
|
// GITHUB_RUN_ID is a number like: 8853654662
|
|
|
|
// which will convert to [ 4024, 3206 ]
|
|
|
|
// and a single incremented id of 8853654663 will become [ 4024, 3207 ]
|
|
|
|
const runIdParts = numToUint16s(parseInt(process.env.GITHUB_RUN_ID));
|
|
|
|
|
|
|
|
// Only use the first 2 parts from the given version number and base the other 2 numbers from the GITHUB_RUN_ID
|
|
|
|
// Example: 2024.4.4024.3206
|
|
|
|
const betaVersion = `${existingVersionParts[0]}.${existingVersionParts[1]}.${runIdParts[0]}.${runIdParts[1]}`;
|
|
|
|
|
|
|
|
manifest.version_name = `${betaVersion} beta - ${process.env.GITHUB_SHA.slice(0, 8)}`;
|
|
|
|
manifest.version = betaVersion;
|
2024-04-26 21:15:36 +02:00
|
|
|
} else {
|
|
|
|
manifest.version = `${manifest.version}.0`;
|
|
|
|
}
|
|
|
|
return manifest;
|
|
|
|
}
|
|
|
|
|
2021-12-21 15:43:35 +01:00
|
|
|
exports["dist:firefox"] = distFirefox;
|
|
|
|
exports["dist:chrome"] = distChrome;
|
|
|
|
exports["dist:opera"] = distOpera;
|
|
|
|
exports["dist:edge"] = distEdge;
|
|
|
|
exports["dist:safari"] = gulp.parallel(distSafariMas, distSafariMasDev, distSafariDmg);
|
|
|
|
exports["dist:safari:mas"] = distSafariMas;
|
|
|
|
exports["dist:safari:masdev"] = distSafariMasDev;
|
|
|
|
exports["dist:safari:dmg"] = distSafariDmg;
|
2019-09-04 19:29:31 +02:00
|
|
|
exports.dist = gulp.parallel(distFirefox, distChrome, distOpera, distEdge);
|