first commit
	
		
			
	
		
	
	
		
	
		
			Some checks failed
		
		
	
	
		
			
				
	
				Types tests / Test (lts/*) (push) Has been cancelled
				
			
		
			
				
	
				Lint / Lint (lts/*) (push) Has been cancelled
				
			
		
			
				
	
				CodeQL / Analyze (javascript) (push) Has been cancelled
				
			
		
			
				
	
				CI / Test (20) (push) Has been cancelled
				
			
		
			
				
	
				CI / Test (22) (push) Has been cancelled
				
			
		
			
				
	
				CI / Test (24) (push) Has been cancelled
				
			
		
		
	
	
				
					
				
			
		
			Some checks failed
		
		
	
	Types tests / Test (lts/*) (push) Has been cancelled
				
			Lint / Lint (lts/*) (push) Has been cancelled
				
			CodeQL / Analyze (javascript) (push) Has been cancelled
				
			CI / Test (20) (push) Has been cancelled
				
			CI / Test (22) (push) Has been cancelled
				
			CI / Test (24) (push) Has been cancelled
				
			This commit is contained in:
		
							
								
								
									
										155
									
								
								web/genericcom.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										155
									
								
								web/genericcom.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,155 @@
 | 
			
		||||
/* Copyright 2017 Mozilla Foundation
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
import { AppOptions } from "./app_options.js";
 | 
			
		||||
import { BaseExternalServices } from "./external_services.js";
 | 
			
		||||
import { BasePreferences } from "./preferences.js";
 | 
			
		||||
import { GenericL10n } from "./genericl10n.js";
 | 
			
		||||
import { GenericScripting } from "./generic_scripting.js";
 | 
			
		||||
import { SignatureStorage } from "./generic_signature_storage.js";
 | 
			
		||||
 | 
			
		||||
if (typeof PDFJSDev !== "undefined" && !PDFJSDev.test("GENERIC")) {
 | 
			
		||||
  throw new Error(
 | 
			
		||||
    'Module "pdfjs-web/genericcom" shall not be used outside GENERIC build.'
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function initCom(app) {}
 | 
			
		||||
 | 
			
		||||
class Preferences extends BasePreferences {
 | 
			
		||||
  async _writeToStorage(prefObj) {
 | 
			
		||||
    localStorage.setItem("pdfjs.preferences", JSON.stringify(prefObj));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  async _readFromStorage(prefObj) {
 | 
			
		||||
    return { prefs: JSON.parse(localStorage.getItem("pdfjs.preferences")) };
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class ExternalServices extends BaseExternalServices {
 | 
			
		||||
  async createL10n() {
 | 
			
		||||
    return new GenericL10n(AppOptions.get("localeProperties")?.lang);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  createScripting() {
 | 
			
		||||
    return new GenericScripting(AppOptions.get("sandboxBundleSrc"));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  createSignatureStorage(eventBus, signal) {
 | 
			
		||||
    return new SignatureStorage(eventBus, signal);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class MLManager {
 | 
			
		||||
  static {
 | 
			
		||||
    if (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) {
 | 
			
		||||
      this.getFakeMLManager = options => new FakeMLManager(options);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  async isEnabledFor(_name) {
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  async deleteModel(_service) {
 | 
			
		||||
    return null;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  isReady(_name) {
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  guess(_data) {}
 | 
			
		||||
 | 
			
		||||
  toggleService(_name, _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 };
 | 
			
		||||
		Reference in New Issue
	
	Block a user