Skip to content

Commit

Permalink
chore: rename pageJSContext to executingContext.
Browse files Browse the repository at this point in the history
  • Loading branch information
andycall committed Dec 15, 2021
1 parent 6742dc1 commit 640c388
Show file tree
Hide file tree
Showing 67 changed files with 487 additions and 348 deletions.
6 changes: 4 additions & 2 deletions bridge/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -179,8 +179,8 @@ if ($ENV{KRAKEN_JS_ENGINE} MATCHES "quickjs")
page.cc
page.h
bindings/qjs/garbage_collected.h
bindings/qjs/js_context.cc
bindings/qjs/js_context.h
bindings/qjs/executing_context.cc
bindings/qjs/executing_context.h
bindings/qjs/native_value.cc
bindings/qjs/native_value.h
bindings/qjs/host_object.h
Expand All @@ -198,6 +198,8 @@ if ($ENV{KRAKEN_JS_ENGINE} MATCHES "quickjs")
bindings/qjs/bom/screen.h
bindings/qjs/bom/timer.cc
bindings/qjs/bom/timer.h
bindings/qjs/bom/dom_timer_coordinator.cc
bindings/qjs/bom/dom_timer_coordinator.h
bindings/qjs/dom/event_target.cc
bindings/qjs/dom/event_target.h
bindings/qjs/dom/event.cc
Expand Down
10 changes: 5 additions & 5 deletions bridge/bindings/qjs/bom/blob.cc
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,20 @@ namespace kraken::binding::qjs {

std::once_flag kBlobInitOnceFlag;

void bindBlob(std::unique_ptr<PageJSContext>& context) {
void bindBlob(std::unique_ptr<ExecutionContext>& context) {
auto* constructor = Blob::instance(context.get());
context->defineGlobalProperty("Blob", constructor->jsObject);
}

Blob::Blob(PageJSContext* context) : HostClass(context, "Blob") {
Blob::Blob(ExecutionContext* context) : HostClass(context, "Blob") {
std::call_once(kBlobInitOnceFlag, []() { JS_NewClassID(&kBlobClassID); });
}

JSClassID Blob::kBlobClassID{0};

JSValue Blob::instanceConstructor(JSContext* ctx, JSValue func_obj, JSValue this_val, int argc, JSValue* argv) {
BlobBuilder builder;
auto constructor = static_cast<Blob*>(JS_GetOpaque(func_obj, PageJSContext::kHostClassClassId));
auto constructor = static_cast<Blob*>(JS_GetOpaque(func_obj, ExecutionContext::kHostClassClassId));
if (argc == 0) {
auto blob = new BlobInstance(constructor);
return blob->jsObject;
Expand Down Expand Up @@ -205,13 +205,13 @@ void BlobInstance::finalize(JSRuntime* rt, JSValue val) {
delete eventTarget;
}

void BlobBuilder::append(PageJSContext& context, BlobInstance* blob) {
void BlobBuilder::append(ExecutionContext& context, BlobInstance* blob) {
std::vector<uint8_t> blobData = blob->_data;
_data.reserve(_data.size() + blobData.size());
_data.insert(_data.end(), blobData.begin(), blobData.end());
}

void BlobBuilder::append(PageJSContext& context, JSValue& value) {
void BlobBuilder::append(ExecutionContext& context, JSValue& value) {
if (JS_IsString(value)) {
const char* buffer = JS_ToCString(context.ctx(), value);
std::string str = std::string(buffer);
Expand Down
8 changes: 4 additions & 4 deletions bridge/bindings/qjs/bom/blob.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,15 @@ namespace kraken::binding::qjs {
class BlobBuilder;
class BlobInstance;

void bindBlob(std::unique_ptr<PageJSContext>& context);
void bindBlob(std::unique_ptr<ExecutionContext>& context);

class Blob : public HostClass {
public:
static JSClassID kBlobClassID;
OBJECT_INSTANCE(Blob);

Blob() = delete;
explicit Blob(PageJSContext* context);
explicit Blob(ExecutionContext* context);

JSValue instanceConstructor(JSContext* ctx, JSValue func_obj, JSValue this_val, int argc, JSValue* argv) override;

Expand Down Expand Up @@ -64,8 +64,8 @@ class BlobInstance : public Instance {

class BlobBuilder {
public:
void append(PageJSContext& context, JSValue& value);
void append(PageJSContext& context, BlobInstance* blob);
void append(ExecutionContext& context, JSValue& value);
void append(ExecutionContext& context, BlobInstance* blob);

std::vector<uint8_t> finalize();

Expand Down
4 changes: 2 additions & 2 deletions bridge/bindings/qjs/bom/console.cc
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ JSValue print(JSContext* ctx, JSValueConst this_val, int argc, JSValueConst* arg
return JS_ThrowTypeError(ctx, "Failed to execute 'print': log must be string.");
}

auto* context = static_cast<PageJSContext*>(JS_GetContextOpaque(ctx));
auto* context = static_cast<ExecutionContext*>(JS_GetContextOpaque(ctx));
const char* logLevel = "info";
JSValue level = argv[1];
if (JS_IsString(level)) {
Expand All @@ -30,7 +30,7 @@ JSValue print(JSContext* ctx, JSValueConst this_val, int argc, JSValueConst* arg
return JS_UNDEFINED;
}

void bindConsole(std::unique_ptr<PageJSContext>& context) {
void bindConsole(std::unique_ptr<ExecutionContext>& context) {
QJS_GLOBAL_BINDING_FUNCTION(context, print, "__kraken_print__", 2);
}

Expand Down
4 changes: 2 additions & 2 deletions bridge/bindings/qjs/bom/console.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
#ifndef KRAKENBRIDGE_CONSOLE_H
#define KRAKENBRIDGE_CONSOLE_H

#include "bindings/qjs/js_context.h"
#include "bindings/qjs/executing_context.h"

namespace kraken::binding::qjs {

void bindConsole(std::unique_ptr<PageJSContext>& context);
void bindConsole(std::unique_ptr<ExecutionContext>& context);

}

Expand Down
2 changes: 1 addition & 1 deletion bridge/bindings/qjs/bom/location.cc
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
namespace kraken::binding::qjs {

JSValue Location::reload(JSContext* ctx, JSValue this_val, int argc, JSValue* argv) {
auto* location = static_cast<Location*>(JS_GetOpaque(this_val, PageJSContext::kHostObjectClassId));
auto* location = static_cast<Location*>(JS_GetOpaque(this_val, ExecutionContext::kHostObjectClassId));
if (getDartMethod()->reloadApp == nullptr) {
return JS_ThrowTypeError(ctx, "Failed to execute 'reload': dart method (reloadApp) is not registered.");
}
Expand Down
4 changes: 2 additions & 2 deletions bridge/bindings/qjs/bom/location.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@
#define KRAKENBRIDGE_LOCATION_H

#include "bindings/qjs/host_object.h"
#include "bindings/qjs/js_context.h"
#include "bindings/qjs/executing_context.h"

namespace kraken::binding::qjs {

class Location : public HostObject {
public:
Location() = delete;
explicit Location(PageJSContext* context) : HostObject(context, "Location") {}
explicit Location(ExecutionContext* context) : HostObject(context, "Location") {}

static JSValue reload(JSContext* ctx, JSValueConst this_val, int argc, JSValueConst* argv);

Expand Down
46 changes: 23 additions & 23 deletions bridge/bindings/qjs/bom/performance.cc
Original file line number Diff line number Diff line change
Expand Up @@ -11,45 +11,45 @@

namespace kraken::binding::qjs {

void bindPerformance(std::unique_ptr<PageJSContext>& context) {
void bindPerformance(std::unique_ptr<ExecutionContext>& context) {
auto* performance = Performance::instance(context.get());
context->defineGlobalProperty("performance", performance->jsObject);
}

using namespace std::chrono;

IMPL_PROPERTY_GETTER(PerformanceEntry, name)(JSContext* ctx, JSValue this_val, int argc, JSValue* argv) {
auto* entry = static_cast<PerformanceEntry*>(JS_GetOpaque(this_val, PageJSContext::kHostObjectClassId));
auto* entry = static_cast<PerformanceEntry*>(JS_GetOpaque(this_val, ExecutionContext::kHostObjectClassId));
return JS_NewString(ctx, entry->m_nativePerformanceEntry->name);
}

IMPL_PROPERTY_GETTER(PerformanceEntry, entryType)(JSContext* ctx, JSValue this_val, int argc, JSValue* argv) {
auto* entry = static_cast<PerformanceEntry*>(JS_GetOpaque(this_val, PageJSContext::kHostObjectClassId));
auto* entry = static_cast<PerformanceEntry*>(JS_GetOpaque(this_val, ExecutionContext::kHostObjectClassId));
return JS_NewString(ctx, entry->m_nativePerformanceEntry->entryType);
}

IMPL_PROPERTY_GETTER(PerformanceEntry, startTime)(JSContext* ctx, JSValue this_val, int argc, JSValue* argv) {
auto* entry = static_cast<PerformanceEntry*>(JS_GetOpaque(this_val, PageJSContext::kHostObjectClassId));
auto* entry = static_cast<PerformanceEntry*>(JS_GetOpaque(this_val, ExecutionContext::kHostObjectClassId));
return JS_NewUint32(ctx, entry->m_nativePerformanceEntry->startTime);
}

IMPL_PROPERTY_GETTER(PerformanceEntry, duration)(JSContext* ctx, JSValue this_val, int argc, JSValue* argv) {
auto* entry = static_cast<PerformanceEntry*>(JS_GetOpaque(this_val, PageJSContext::kHostObjectClassId));
auto* entry = static_cast<PerformanceEntry*>(JS_GetOpaque(this_val, ExecutionContext::kHostObjectClassId));
return JS_NewUint32(ctx, entry->m_nativePerformanceEntry->duration);
}

IMPL_PROPERTY_GETTER(Performance, timeOrigin)(JSContext* ctx, JSValue this_val, int argc, JSValue* argv) {
auto* performance = static_cast<Performance*>(JS_GetOpaque(this_val, PageJSContext::kHostObjectClassId));
auto* performance = static_cast<Performance*>(JS_GetOpaque(this_val, ExecutionContext::kHostObjectClassId));
int64_t time = std::chrono::duration_cast<std::chrono::milliseconds>(performance->m_context->timeOrigin.time_since_epoch()).count();
return JS_NewUint32(ctx, time);
}

JSValue Performance::now(JSContext* ctx, JSValue this_val, int argc, JSValue* argv) {
auto* performance = static_cast<Performance*>(JS_GetOpaque(this_val, PageJSContext::kHostObjectClassId));
auto* performance = static_cast<Performance*>(JS_GetOpaque(this_val, ExecutionContext::kHostObjectClassId));
return JS_NewFloat64(ctx, performance->internalNow());
}
JSValue Performance::toJSON(JSContext* ctx, JSValue this_val, int argc, JSValue* argv) {
auto* performance = static_cast<Performance*>(JS_GetOpaque(this_val, PageJSContext::kHostObjectClassId));
auto* performance = static_cast<Performance*>(JS_GetOpaque(this_val, ExecutionContext::kHostObjectClassId));
double now = performance->internalNow();
int64_t timeOrigin = std::chrono::duration_cast<std::chrono::milliseconds>(performance->m_context->timeOrigin.time_since_epoch()).count();

Expand All @@ -59,7 +59,7 @@ JSValue Performance::toJSON(JSContext* ctx, JSValue this_val, int argc, JSValue*
return object;
}

static JSValue buildPerformanceEntry(const std::string& entryType, PageJSContext* context, NativePerformanceEntry* nativePerformanceEntry) {
static JSValue buildPerformanceEntry(const std::string& entryType, ExecutionContext* context, NativePerformanceEntry* nativePerformanceEntry) {
if (entryType == "mark") {
auto* mark = new PerformanceMark(context, nativePerformanceEntry);
return mark->jsObject;
Expand All @@ -71,7 +71,7 @@ static JSValue buildPerformanceEntry(const std::string& entryType, PageJSContext
}

JSValue Performance::clearMarks(JSContext* ctx, JSValue this_val, int argc, JSValue* argv) {
auto* performance = static_cast<Performance*>(JS_GetOpaque(this_val, PageJSContext::kHostObjectClassId));
auto* performance = static_cast<Performance*>(JS_GetOpaque(this_val, ExecutionContext::kHostObjectClassId));
JSValue targetMark = JS_NULL;
if (argc == 1) {
targetMark = argv[0];
Expand Down Expand Up @@ -107,7 +107,7 @@ JSValue Performance::clearMeasures(JSContext* ctx, JSValue this_val, int argc, J
targetMark = argv[0];
}

auto* performance = static_cast<Performance*>(JS_GetOpaque(this_val, PageJSContext::kHostObjectClassId));
auto* performance = static_cast<Performance*>(JS_GetOpaque(this_val, ExecutionContext::kHostObjectClassId));
auto entries = performance->m_nativePerformance.entries;
auto it = std::begin(*entries);

Expand All @@ -133,7 +133,7 @@ JSValue Performance::clearMeasures(JSContext* ctx, JSValue this_val, int argc, J
return JS_NULL;
}
JSValue Performance::getEntries(JSContext* ctx, JSValue this_val, int argc, JSValue* argv) {
auto* performance = static_cast<Performance*>(JS_GetOpaque(this_val, PageJSContext::kHostObjectClassId));
auto* performance = static_cast<Performance*>(JS_GetOpaque(this_val, ExecutionContext::kHostObjectClassId));
auto entries = performance->getFullEntries();

size_t entriesSize = entries.size();
Expand All @@ -157,7 +157,7 @@ JSValue Performance::getEntriesByName(JSContext* ctx, JSValue this_val, int argc
}

std::string targetName = jsValueToStdString(ctx, argv[0]);
auto* performance = static_cast<Performance*>(JS_GetOpaque(this_val, PageJSContext::kHostObjectClassId));
auto* performance = static_cast<Performance*>(JS_GetOpaque(this_val, ExecutionContext::kHostObjectClassId));
auto entries = performance->getFullEntries();
JSValue targetEntriesArray = JS_NewArray(ctx);
JSValue pushMethod = JS_GetPropertyStr(ctx, targetEntriesArray, "push");
Expand All @@ -179,7 +179,7 @@ JSValue Performance::getEntriesByType(JSContext* ctx, JSValue this_val, int argc
}

std::string entryType = jsValueToStdString(ctx, argv[0]);
auto* performance = static_cast<Performance*>(JS_GetOpaque(this_val, PageJSContext::kHostObjectClassId));
auto* performance = static_cast<Performance*>(JS_GetOpaque(this_val, ExecutionContext::kHostObjectClassId));
auto entries = performance->getFullEntries();
JSValue targetEntriesArray = JS_NewArray(ctx);
JSValue pushMethod = JS_GetPropertyStr(ctx, targetEntriesArray, "push");
Expand All @@ -199,7 +199,7 @@ JSValue Performance::mark(JSContext* ctx, JSValue this_val, int argc, JSValue* a
return JS_ThrowTypeError(ctx, "Failed to execute 'mark' on 'Performance': 1 argument required, but only 0 present.");
}

auto* performance = static_cast<Performance*>(JS_GetOpaque(this_val, PageJSContext::kHostObjectClassId));
auto* performance = static_cast<Performance*>(JS_GetOpaque(this_val, ExecutionContext::kHostObjectClassId));
std::string markName = jsValueToStdString(ctx, argv[0]);
performance->m_nativePerformance.mark(markName);

Expand All @@ -224,7 +224,7 @@ JSValue Performance::measure(JSContext* ctx, JSValue this_val, int argc, JSValue
endMark = jsValueToStdString(ctx, argv[2]);
}

auto* performance = static_cast<Performance*>(JS_GetOpaque(this_val, PageJSContext::kHostObjectClassId));
auto* performance = static_cast<Performance*>(JS_GetOpaque(this_val, ExecutionContext::kHostObjectClassId));
JSValue exception = JS_NULL;
performance->internalMeasure(name, startMark, endMark, &exception);

Expand All @@ -234,15 +234,15 @@ JSValue Performance::measure(JSContext* ctx, JSValue this_val, int argc, JSValue
return JS_NULL;
}

PerformanceEntry::PerformanceEntry(PageJSContext* context, NativePerformanceEntry* nativePerformanceEntry)
PerformanceEntry::PerformanceEntry(ExecutionContext* context, NativePerformanceEntry* nativePerformanceEntry)
: HostObject(context, "PerformanceEntry"), m_nativePerformanceEntry(nativePerformanceEntry) {}

PerformanceMark::PerformanceMark(PageJSContext* context, std::string& name, int64_t startTime)
PerformanceMark::PerformanceMark(ExecutionContext* context, std::string& name, int64_t startTime)
: PerformanceEntry(context, new NativePerformanceEntry(name, "mark", startTime, 0, PERFORMANCE_ENTRY_NONE_UNIQUE_ID)) {}
PerformanceMark::PerformanceMark(PageJSContext* context, NativePerformanceEntry* nativePerformanceEntry) : PerformanceEntry(context, nativePerformanceEntry) {}
PerformanceMeasure::PerformanceMeasure(PageJSContext* context, std::string& name, int64_t startTime, int64_t duration)
PerformanceMark::PerformanceMark(ExecutionContext* context, NativePerformanceEntry* nativePerformanceEntry) : PerformanceEntry(context, nativePerformanceEntry) {}
PerformanceMeasure::PerformanceMeasure(ExecutionContext* context, std::string& name, int64_t startTime, int64_t duration)
: PerformanceEntry(context, new NativePerformanceEntry(name, "measure", startTime, duration, PERFORMANCE_ENTRY_NONE_UNIQUE_ID)) {}
PerformanceMeasure::PerformanceMeasure(PageJSContext* context, NativePerformanceEntry* nativePerformanceEntry) : PerformanceEntry(context, nativePerformanceEntry) {}
PerformanceMeasure::PerformanceMeasure(ExecutionContext* context, NativePerformanceEntry* nativePerformanceEntry) : PerformanceEntry(context, nativePerformanceEntry) {}
void NativePerformance::mark(const std::string& markName) {
int64_t startTime = std::chrono::duration_cast<microseconds>(system_clock::now().time_since_epoch()).count();
auto* nativePerformanceEntry = new NativePerformanceEntry{markName, "mark", startTime, 0, PERFORMANCE_ENTRY_NONE_UNIQUE_ID};
Expand All @@ -253,7 +253,7 @@ void NativePerformance::mark(const std::string& markName, int64_t startTime) {
entries->emplace_back(nativePerformanceEntry);
}

Performance::Performance(PageJSContext* context) : HostObject(context, "Performance") {}
Performance::Performance(ExecutionContext* context) : HostObject(context, "Performance") {}
void Performance::internalMeasure(const std::string& name, const std::string& startMark, const std::string& endMark, JSValue* exception) {
auto entries = getFullEntries();

Expand Down Expand Up @@ -412,7 +412,7 @@ double getMeasureTotalDuration(const std::vector<NativePerformanceEntry*>& measu
}

JSValue Performance::__kraken_navigation_summary__(JSContext* ctx, JSValue this_val, int argc, JSValue* argv) {
auto* performance = static_cast<Performance*>(JS_GetOpaque(this_val, PageJSContext::kHostObjectClassId));
auto* performance = static_cast<Performance*>(JS_GetOpaque(this_val, ExecutionContext::kHostObjectClassId));
JSValue exception = JS_NULL;
performance->measureSummary(&exception);

Expand Down
14 changes: 7 additions & 7 deletions bridge/bindings/qjs/bom/performance.h
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@

namespace kraken::binding::qjs {

void bindPerformance(std::unique_ptr<PageJSContext>& context);
void bindPerformance(std::unique_ptr<ExecutionContext>& context);

struct NativePerformanceEntry {
NativePerformanceEntry(const std::string& name, const std::string& entryType, int64_t startTime, int64_t duration, int64_t uniqueId) : startTime(startTime), duration(duration), uniqueId(uniqueId) {
Expand All @@ -144,7 +144,7 @@ struct NativePerformanceEntry {
class PerformanceEntry : public HostObject {
public:
PerformanceEntry() = delete;
explicit PerformanceEntry(PageJSContext* context, NativePerformanceEntry* m_nativePerformanceEntry);
explicit PerformanceEntry(ExecutionContext* context, NativePerformanceEntry* m_nativePerformanceEntry);

DEFINE_READONLY_PROPERTY(name);
DEFINE_READONLY_PROPERTY(entryType);
Expand All @@ -158,15 +158,15 @@ class PerformanceEntry : public HostObject {
class PerformanceMark : public PerformanceEntry {
public:
PerformanceMark() = delete;
explicit PerformanceMark(PageJSContext* context, std::string& name, int64_t startTime);
explicit PerformanceMark(PageJSContext* context, NativePerformanceEntry* nativePerformanceEntry);
explicit PerformanceMark(ExecutionContext* context, std::string& name, int64_t startTime);
explicit PerformanceMark(ExecutionContext* context, NativePerformanceEntry* nativePerformanceEntry);
};

class PerformanceMeasure : public PerformanceEntry {
public:
PerformanceMeasure() = delete;
explicit PerformanceMeasure(PageJSContext* context, std::string& name, int64_t startTime, int64_t duration);
explicit PerformanceMeasure(PageJSContext* context, NativePerformanceEntry* nativePerformanceEntry);
explicit PerformanceMeasure(ExecutionContext* context, std::string& name, int64_t startTime, int64_t duration);
explicit PerformanceMeasure(ExecutionContext* context, NativePerformanceEntry* nativePerformanceEntry);
};

class NativePerformance {
Expand All @@ -179,7 +179,7 @@ class NativePerformance {
class Performance : public HostObject {
public:
Performance() = delete;
explicit Performance(PageJSContext* context);
explicit Performance(ExecutionContext* context);

OBJECT_INSTANCE(Performance);

Expand Down
6 changes: 3 additions & 3 deletions bridge/bindings/qjs/bom/screen.cc
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

namespace kraken::binding::qjs {

void bindScreen(std::unique_ptr<PageJSContext>& context) {
void bindScreen(std::unique_ptr<ExecutionContext>& context) {
auto* screen = new Screen(context.get());
context->defineGlobalProperty("screen", screen->jsObject);
}
Expand All @@ -17,7 +17,7 @@ IMPL_PROPERTY_GETTER(Screen, width)(JSContext* ctx, JSValue this_val, int argc,
return JS_ThrowTypeError(ctx, "Failed to read screen: dart method (getScreen) is not registered.");
}

auto context = static_cast<PageJSContext*>(JS_GetContextOpaque(ctx));
auto context = static_cast<ExecutionContext*>(JS_GetContextOpaque(ctx));
NativeScreen* screen = getDartMethod()->getScreen(context->getContextId());
return JS_NewFloat64(ctx, screen->width);
}
Expand All @@ -27,7 +27,7 @@ IMPL_PROPERTY_GETTER(Screen, height)(JSContext* ctx, JSValue this_val, int argc,
return JS_ThrowTypeError(ctx, "Failed to read screen: dart method (getScreen) is not registered.");
}

auto context = static_cast<PageJSContext*>(JS_GetContextOpaque(ctx));
auto context = static_cast<ExecutionContext*>(JS_GetContextOpaque(ctx));
NativeScreen* screen = getDartMethod()->getScreen(context->getContextId());
return JS_NewFloat64(ctx, screen->height);
}
Expand Down
Loading

0 comments on commit 640c388

Please sign in to comment.