Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/uriloader/exthandler/win/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 3 kB image not shown  

Quelle  nsOSHelperAppService.h   Sprache: C

 
/* -*- Mode: C++; tab-width: 3; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */


#ifndef nsOSHelperAppService_h__
#define nsOSHelperAppService_h__

// The OS helper app service is a subclass of nsExternalHelperAppService and is
// implemented on each platform. It contains platform specific code for finding
// helper applications for a given mime type in addition to launching those
// applications.

#include "nsExternalHelperAppService.h"
#include "nsCExternalHandlerService.h"
#include "nsCOMPtr.h"
#include <windows.h>
#include <shlobj.h>

class nsMIMEInfoWin;
class nsIMIMEInfo;

class nsOSHelperAppService : public nsExternalHelperAppService {
 public:
  nsOSHelperAppService();
  virtual ~nsOSHelperAppService();

  // override nsIExternalProtocolService methods
  NS_IMETHOD OSProtocolHandlerExists(const char* aProtocolScheme,
                                     bool* aHandlerExists) override;
  NS_IMETHOD GetApplicationDescription(const nsACString& aScheme,
                                       nsAString& _retval) override;

  NS_IMETHOD IsCurrentAppOSDefaultForProtocol(const nsACString& aScheme,
                                              bool* _retval) override;

  // method overrides for windows registry look up steps....
  NS_IMETHOD GetMIMEInfoFromOS(const nsACString& aMIMEType,
                               const nsACString& aFileExt, bool* aFound,
                               nsIMIMEInfo** aMIMEInfo) override;
  NS_IMETHOD UpdateDefaultAppInfo(nsIMIMEInfo* aMIMEInfo) override;
  NS_IMETHOD GetProtocolHandlerInfoFromOS(const nsACString& aScheme,
                                          bool* found,
                                          nsIHandlerInfo** _retval);
  virtual bool GetMIMETypeFromOSForExtension(const nsACString& aExtension,
                                             nsACString& aMIMEType) override;

  /** Get the string value of a registry value and store it in result.
   * @return true on success, false on failure
   */

  static bool GetValueString(HKEY hKey, const char16_t* pValueName,
                             nsAString& result);

 protected:
  nsresult GetDefaultAppInfo(const nsAString& aTypeName,
                             nsAString& aDefaultDescription,
                             nsIFile** aDefaultApplication);
  // Lookup a mime info by extension, using an optional type hint
  already_AddRefed<nsMIMEInfoWin> GetByExtension(
      const nsString& aFileExt, const char* aTypeHint = nullptr);
  nsresult InternalSetDefaultsOnMIME(nsMIMEInfoWin* aMIMEInfo);
  nsresult FindOSMimeInfoForType(const char* aMimeContentType, nsIURI* aURI,
                                 char** aFileExtension,
                                 nsIMIMEInfo** aMIMEInfo);

  static nsresult GetMIMEInfoFromRegistry(const nsString& fileType,
                                          nsIMIMEInfo* pInfo);
  /// Looks up the type for the extension aExt and compares it to aType
  static bool typeFromExtEquals(const char16_t* aExt, const char* aType);

 private:
  IApplicationAssociationRegistration* mAppAssoc;
};

#endif  // nsOSHelperAppService_h__

Messung V0.5
C=90 H=100 G=95

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.