The owner: "ensure that all software patent and trademark licenses in the repo are being respected". A read-only audit of what the packages carry found no blocker and these gaps, all closed here (the record is impl-review-findings-6.md, "Licensing audit"): - NOTICE names the runtime the engine ships with: glibc 2.23 as crosstool-NG modifies it (LGPL-2.1), the GCC 9.4.0 runtime (GPL-3.0 with the Runtime Library Exception), and the eight Debian jessie libraries, with the FreeType disclaimer, Lato, the hyphenation patterns, and where the corresponding source is. licenses/ gains LGPL-2.1, GPL-3.0 and the GCC exception from the pinned tarballs and Debian's copyright files from the sysroot; every package ships all of licenses/ and CREDITS.md, checked in the payload preflight. - NOTICE names the modified engine's source (the fork, branch, pinned commit, base release, the patches), as MPL-2.0 3.2 asks. - README and LICENSE no longer call the packages Apache-2.0 and MPL-2.0 only; the dead licensing.shtml reference is replaced by the UXP LICENSE and TRADEMARK files and Moonchild's legal and redist pages. - Apache-2.0 4(b) change notices on the 29 HP-derived files changed since import. - A drawn magnifier is the DuckDuckGo engines' icon; Google's logo is Google's only; the unused Bing logo is gone. - The engine's services-sync.js defaults pointed at Moonchild's Sync, key server and add-on host: blanked at bundle time, checked. - The "Blazer" keyword, the Goanna-mark tagline, a stray screenshot and a .bak dropped; the HP SDK's terms stated where it is downloaded; CREDITS records the logo's origin and the screenshot strip's licence. Deferred to the next engine build: about:credits' URL and --disable-ffmpeg (the system-libavcodec path is dead on the device). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XM9EDSp83ZFRhggY4RCT9X
121 lines
3.6 KiB
C++
121 lines
3.6 KiB
C++
/* @@@LICENSE
|
|
*
|
|
* Copyright (c) 2012 Hewlett-Packard Development Company, L.P.
|
|
*
|
|
* 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.
|
|
*
|
|
LICENSE@@@ */
|
|
|
|
/* Modified by the Jihad Browser project (2026), per Apache-2.0 section 4(b): this file differs from
|
|
* HP's isis-project original. The changes are this repository's git history for this file. */
|
|
|
|
#ifndef JSON_NPOBJECT_H
|
|
#define JSON_NPOBJECT_H
|
|
|
|
#include <npupp.h>
|
|
#include <npapi.h>
|
|
|
|
#include <string>
|
|
#include <map>
|
|
|
|
#include <pbnjson.hpp>
|
|
|
|
class BrowserAdapter;
|
|
|
|
/**
|
|
* \brief This class implements a generic NPObject that is initialized
|
|
* with Json.
|
|
*
|
|
* Only getting properties is supported. Methods, and modifying/deleting
|
|
* properties are not supported.
|
|
*/
|
|
|
|
class JsonNPObject : public NPObject
|
|
{
|
|
public:
|
|
JsonNPObject(BrowserAdapter *adapter);
|
|
~JsonNPObject();
|
|
|
|
/**
|
|
* Defines methods for the object.
|
|
*/
|
|
static NPClass sJsonNPObjectClass;
|
|
|
|
/**
|
|
* Initializes the object with JSON.
|
|
* \param json Json that represents the object.
|
|
* \return True if successful.
|
|
*/
|
|
bool initialize(pbnjson::JSchema &schema, const char *json);
|
|
|
|
/**
|
|
* Initialize the object with a parsed DOM
|
|
* \param dom Representation of the DOM.
|
|
*/
|
|
bool initialize(pbnjson::JValue &dom);
|
|
|
|
private:
|
|
/**
|
|
* \name NPClass methods
|
|
*/
|
|
/*@{*/
|
|
static NPObject* PrvObjAllocate(NPP npp, NPClass* klass);
|
|
static void PrvObjDeallocate(NPObject* obj);
|
|
static void PrvObjInvalidate(NPObject* obj);
|
|
static bool PrvObjHasMethod(NPObject* obj, NPIdentifier name);
|
|
static bool PrvObjInvoke(NPObject *obj, NPIdentifier name,
|
|
const NPVariant *args, uint32_t argCount, NPVariant *result);
|
|
static bool PrvObjInvokeDefault(NPObject *obj, const NPVariant *args,
|
|
uint32_t argCount, NPVariant *result);
|
|
static bool PrvObjHasProperty(NPObject *obj, NPIdentifier name);
|
|
static bool PrvObjGetProperty(NPObject *obj, NPIdentifier name,
|
|
NPVariant *result);
|
|
static bool PrvObjSetProperty(NPObject *obj, NPIdentifier name,
|
|
const NPVariant *value);
|
|
static bool PrvObjRemoveProperty(NPObject *obj, NPIdentifier name);
|
|
static bool PrvObjEnumerate(NPObject *obj, NPIdentifier **value,
|
|
uint32_t *count);
|
|
static bool PrvObjConstruct(NPObject *obj, const NPVariant *args,
|
|
uint32_t argCount, NPVariant *result);
|
|
/*@}*/
|
|
|
|
/**
|
|
* \name Instance methods that implement the NPClass methods.
|
|
*/
|
|
/*@{*/
|
|
bool hasProperty(NPIdentifier name);
|
|
bool getProperty(NPIdentifier name, NPVariant *result);
|
|
/*@}*/
|
|
|
|
private:
|
|
/**
|
|
* \brief DOM representation of the parsed Json input.
|
|
*/
|
|
pbnjson::JValue m_dom;
|
|
|
|
/**
|
|
* \brief Map of this object's properties that are objects
|
|
* themselves.
|
|
*
|
|
* This is populated lazily.
|
|
*/
|
|
std::map<std::string, NPObject *> m_objects;
|
|
|
|
/**
|
|
* \brief A reference to the NPP object.
|
|
*/
|
|
BrowserAdapter *m_adapter;
|
|
};
|
|
|
|
#endif
|