Skip to content

Commit

Permalink
Merge pull request #19568 from Snuffleupagus/FakeMLManager-no-bundle
Browse files Browse the repository at this point in the history
Don't bundle the `FakeMLManager` class in regular builds
  • Loading branch information
timvandermeij authored Mar 2, 2025
2 parents 93759f3 + b5ac96d commit 27c82ab
Showing 1 changed file with 80 additions and 75 deletions.
155 changes: 80 additions & 75 deletions web/genericcom.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,12 @@ class ExternalServices extends BaseExternalServices {
}

class MLManager {
static {
if (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) {
this.getFakeMLManager = options => new FakeMLManager(options);
}
}

async isEnabledFor(_name) {
return false;
}
Expand All @@ -68,83 +74,82 @@ class MLManager {
guess(_data) {}

toggleService(_name, _enabled) {}

static getFakeMLManager(options) {
return new FakeMLManager(options);
}
}

class FakeMLManager {
eventBus = null;

hasProgress = false;

constructor({ enableGuessAltText, enableAltTextModelDownload }) {
this.enableGuessAltText = enableGuessAltText;
this.enableAltTextModelDownload = enableAltTextModelDownload;
}

setEventBus(eventBus, abortSignal) {
this.eventBus = eventBus;
}

async isEnabledFor(_name) {
return this.enableGuessAltText;
}

async deleteModel(_name) {
this.enableAltTextModelDownload = false;
return null;
}

async loadModel(_name) {}

async downloadModel(_name) {
// Simulate downloading the model but with progress.
// The progress can be seen in the new alt-text dialog.
this.hasProgress = true;

const { promise, resolve } = Promise.withResolvers();
const total = 1e8;
const end = 1.5 * total;
const increment = 5e6;
let loaded = 0;
const id = setInterval(() => {
loaded += increment;
if (loaded <= end) {
this.eventBus.dispatch("loadaiengineprogress", {
source: this,
detail: {
total,
totalLoaded: loaded,
finished: loaded + increment >= end,
},
});
return;
}
clearInterval(id);
this.hasProgress = false;
this.enableAltTextModelDownload = true;
resolve(true);
}, 900);
return promise;
}

isReady(_name) {
return this.enableAltTextModelDownload;
}

guess({ request: { data } }) {
return new Promise(resolve => {
setTimeout(() => {
resolve(data ? { output: "Fake alt text." } : { error: true });
}, 3000);
});
}

toggleService(_name, enabled) {
this.enableGuessAltText = enabled;
}
if (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) {
// eslint-disable-next-line no-var
var FakeMLManager = class {
eventBus = null;

hasProgress = false;

constructor({ enableGuessAltText, enableAltTextModelDownload }) {
this.enableGuessAltText = enableGuessAltText;
this.enableAltTextModelDownload = enableAltTextModelDownload;
}

setEventBus(eventBus, abortSignal) {
this.eventBus = eventBus;
}

async isEnabledFor(_name) {
return this.enableGuessAltText;
}

async deleteModel(_name) {
this.enableAltTextModelDownload = false;
return null;
}

async loadModel(_name) {}

async downloadModel(_name) {
// Simulate downloading the model but with progress.
// The progress can be seen in the new alt-text dialog.
this.hasProgress = true;

const { promise, resolve } = Promise.withResolvers();
const total = 1e8;
const end = 1.5 * total;
const increment = 5e6;
let loaded = 0;
const id = setInterval(() => {
loaded += increment;
if (loaded <= end) {
this.eventBus.dispatch("loadaiengineprogress", {
source: this,
detail: {
total,
totalLoaded: loaded,
finished: loaded + increment >= end,
},
});
return;
}
clearInterval(id);
this.hasProgress = false;
this.enableAltTextModelDownload = true;
resolve(true);
}, 900);
return promise;
}

isReady(_name) {
return this.enableAltTextModelDownload;
}

guess({ request: { data } }) {
return new Promise(resolve => {
setTimeout(() => {
resolve(data ? { output: "Fake alt text." } : { error: true });
}, 3000);
});
}

toggleService(_name, enabled) {
this.enableGuessAltText = enabled;
}
};
}

export { ExternalServices, initCom, MLManager, Preferences };

0 comments on commit 27c82ab

Please sign in to comment.