Skip to content

Commit

Permalink
feat: optimize eventTarget properties and eventHandlerMap.
Browse files Browse the repository at this point in the history
  • Loading branch information
andycall committed Dec 22, 2021
1 parent dd1a54b commit cd10a41
Show file tree
Hide file tree
Showing 19 changed files with 190 additions and 224 deletions.
7 changes: 3 additions & 4 deletions bridge/bindings/qjs/bom/console_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include "console.h"
#include "gtest/gtest.h"
#include "page.h"
#include "kraken_test_env.h"

std::once_flag kGlobalClassIdFlag;

Expand All @@ -15,11 +16,10 @@ TEST(Console, rawPrintShouldWork) {
logExecuted = true;
EXPECT_STREQ(message.c_str(), "1234");
};
auto bridge = new kraken::KrakenPage(0, [](int32_t contextId, const char* errmsg) {});
auto bridge = TEST_init();
const char* code = "__kraken_print__('1234', 'info')";
bridge->evaluateScript(code, strlen(code), "vm://", 0);
EXPECT_EQ(logExecuted, true);
delete bridge;
}

TEST(Console, log) {
Expand All @@ -28,12 +28,11 @@ TEST(Console, log) {
KRAKEN_LOG(VERBOSE) << message;
logExecuted = true;
};
auto bridge = new kraken::KrakenPage(0, [](int32_t contextId, const char* errmsg) {
auto bridge = TEST_init([](int32_t contextId, const char* errmsg) {
KRAKEN_LOG(VERBOSE) << errmsg;
exit(1);
});
const char* code = "console.log(1234);";
bridge->evaluateScript(code, strlen(code), "vm://", 0);
EXPECT_EQ(logExecuted, true);
delete bridge;
}
2 changes: 1 addition & 1 deletion bridge/bindings/qjs/bom/window.cc
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ IMPL_PROPERTY_SETTER(Window, onerror)(JSContext* ctx, JSValue this_val, int argc
auto* window = static_cast<WindowInstance*>(JS_GetOpaque(this_val, 1));
JSValue eventString = JS_NewString(ctx, "onerror");
JSString* p = JS_VALUE_GET_STRING(eventString);
window->setPropertyHandler(p, argv[0]);
window->setAttributesEventHandler(p, argv[0]);

if (!JS_IsNull(window->onerror)) {
JS_FreeValue(ctx, window->onerror);
Expand Down
6 changes: 2 additions & 4 deletions bridge/bindings/qjs/bom/window_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@ TEST(Window, instanceofEventTarget) {
logCalled = true;
EXPECT_STREQ(message.c_str(), "true");
};
auto* bridge = new kraken::KrakenPage(0, [](int32_t contextId, const char* errmsg) {
auto bridge = TEST_init( [](int32_t contextId, const char* errmsg) {
KRAKEN_LOG(VERBOSE) << errmsg;
errorCalled = true;
});
auto& context = bridge->getContext();
const char* code = "console.log(window instanceof EventTarget)";
bridge->evaluateScript(code, strlen(code), "vm://", 0);
delete bridge;

EXPECT_EQ(errorCalled, false);
EXPECT_EQ(logCalled, true);
}
Expand All @@ -40,7 +40,6 @@ requestAnimationFrame(() => {

bridge->evaluateScript(code.c_str(), code.size(), "vm://", 0);
TEST_runLoop(bridge->getContext().get());
disposePage(0);
}

TEST(Window, cancelAnimationFrame) {
Expand All @@ -57,5 +56,4 @@ cancelAnimationFrame(id);

bridge->evaluateScript(code.c_str(), code.size(), "vm://", 0);
TEST_runLoop(bridge->getContext().get());
disposePage(0);
}
4 changes: 2 additions & 2 deletions bridge/bindings/qjs/dom/custom_event_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include "event_target.h"
#include "gtest/gtest.h"
#include "page.h"
#include "kraken_test_env.h"

TEST(CustomEvent, instanceofEvent) {
bool static errorCalled = false;
Expand All @@ -14,7 +15,7 @@ TEST(CustomEvent, instanceofEvent) {
logCalled = true;
EXPECT_STREQ(message.c_str(), "true");
};
auto* bridge = new kraken::KrakenPage(0, [](int32_t contextId, const char* errmsg) {
auto bridge = TEST_init([](int32_t contextId, const char* errmsg) {
KRAKEN_LOG(VERBOSE) << errmsg;
errorCalled = true;
});
Expand All @@ -23,7 +24,6 @@ TEST(CustomEvent, instanceofEvent) {
"let customEvent = new CustomEvent('abc', { detail: 'helloworld'});"
"console.log(customEvent instanceof Event);";
bridge->evaluateScript(code, strlen(code), "vm://", 0);
delete bridge;
EXPECT_EQ(errorCalled, false);
EXPECT_EQ(logCalled, true);
}
13 changes: 6 additions & 7 deletions bridge/bindings/qjs/dom/document_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include "event_target.h"
#include "gtest/gtest.h"
#include "page.h"
#include "kraken_test_env.h"

TEST(Document, createTextNode) {
bool static errorCalled = false;
Expand All @@ -14,7 +15,7 @@ TEST(Document, createTextNode) {
logCalled = true;
EXPECT_STREQ(message.c_str(), "<div>");
};
auto* bridge = new kraken::KrakenPage(0, [](int32_t contextId, const char* errmsg) {
auto bridge = TEST_init([](int32_t contextId, const char* errmsg) {
KRAKEN_LOG(VERBOSE) << errmsg;
errorCalled = true;
});
Expand All @@ -27,7 +28,6 @@ TEST(Document, createTextNode) {
"div.appendChild(text);"
"console.log(div);";
bridge->evaluateScript(code, strlen(code), "vm://", 0);
delete bridge;
EXPECT_EQ(errorCalled, false);
EXPECT_EQ(logCalled, true);
}
Expand All @@ -39,14 +39,13 @@ TEST(Document, instanceofNode) {
logCalled = true;
EXPECT_STREQ(message.c_str(), "true true true");
};
auto* bridge = new kraken::KrakenPage(0, [](int32_t contextId, const char* errmsg) {
auto bridge = TEST_init( [](int32_t contextId, const char* errmsg) {
KRAKEN_LOG(VERBOSE) << errmsg;
errorCalled = true;
});
auto& context = bridge->getContext();
const char* code = "console.log(document instanceof Node, document instanceof Document, document instanceof EventTarget)";
bridge->evaluateScript(code, strlen(code), "vm://", 0);
delete bridge;
EXPECT_EQ(errorCalled, false);
EXPECT_EQ(logCalled, true);
}
Expand All @@ -59,17 +58,17 @@ TEST(Document, createElementShouldWorkWithMultipleContext) {
const char* code = "(() => { let img = document.createElement('img'); document.body.appendChild(img); })();";

{
auto* bridge = bridge1 = new kraken::KrakenPage(0, [](int32_t contextId, const char* errmsg) {});
auto bridge = TEST_init([](int32_t contextId, const char* errmsg) {});
auto& context = bridge->getContext();
bridge->evaluateScript(code, strlen(code), "vm://", 0);
bridge1 = bridge.release();
}

{
auto* bridge = new kraken::KrakenPage(1, [](int32_t contextId, const char* errmsg) {});
auto bridge = TEST_init([](int32_t contextId, const char* errmsg) {});
auto& context = bridge->getContext();
const char* code = "(() => { let img = document.createElement('img'); document.body.appendChild(img); })();";
bridge->evaluateScript(code, strlen(code), "vm://", 0);
delete bridge;
}

bridge1->evaluateScript(code, strlen(code), "vm://", 0);
Expand Down
16 changes: 8 additions & 8 deletions bridge/bindings/qjs/dom/element_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include "event_target.h"
#include "gtest/gtest.h"
#include "page.h"
#include "kraken_test_env.h"

TEST(Element, setAttribute) {
bool static errorCalled = false;
Expand All @@ -14,7 +15,7 @@ TEST(Element, setAttribute) {
logCalled = true;
EXPECT_STREQ(message.c_str(), "1234");
};
auto* bridge = new kraken::KrakenPage(0, [](int32_t contextId, const char* errmsg) {
auto bridge = TEST_init([](int32_t contextId, const char* errmsg) {
KRAKEN_LOG(VERBOSE) << errmsg;
errorCalled = true;
});
Expand All @@ -25,7 +26,6 @@ TEST(Element, setAttribute) {
"document.body.appendChild(div);"
"console.log(div.getAttribute('hello'))";
bridge->evaluateScript(code, strlen(code), "vm://", 0);
delete bridge;
EXPECT_EQ(errorCalled, false);
EXPECT_EQ(logCalled, true);
}
Expand All @@ -37,7 +37,7 @@ TEST(Element, instanceofNode) {
logCalled = true;
EXPECT_STREQ(message.c_str(), "true");
};
auto* bridge = new kraken::KrakenPage(0, [](int32_t contextId, const char* errmsg) {
auto bridge = TEST_init( [](int32_t contextId, const char* errmsg) {
KRAKEN_LOG(VERBOSE) << errmsg;
errorCalled = true;
});
Expand All @@ -46,7 +46,7 @@ TEST(Element, instanceofNode) {
"let div = document.createElement('div');"
"console.log(div instanceof Node)";
bridge->evaluateScript(code, strlen(code), "vm://", 0);
delete bridge;

EXPECT_EQ(errorCalled, false);
EXPECT_EQ(logCalled, true);
}
Expand All @@ -58,7 +58,7 @@ TEST(Element, instanceofEventTarget) {
logCalled = true;
EXPECT_STREQ(message.c_str(), "true");
};
auto* bridge = new kraken::KrakenPage(0, [](int32_t contextId, const char* errmsg) {
auto bridge = TEST_init( [](int32_t contextId, const char* errmsg) {
KRAKEN_LOG(VERBOSE) << errmsg;
errorCalled = true;
});
Expand All @@ -67,7 +67,7 @@ TEST(Element, instanceofEventTarget) {
"let div = document.createElement('div');"
"console.log(div instanceof EventTarget)";
bridge->evaluateScript(code, strlen(code), "vm://", 0);
delete bridge;

EXPECT_EQ(errorCalled, false);
EXPECT_EQ(logCalled, true);
}
Expand All @@ -81,7 +81,7 @@ TEST(Element, stringifyBoundingClientRect) {
logCalled = true;
EXPECT_STREQ(message.c_str(), "{\"x\":10,\"y\":20,\"width\":30,\"height\":40,\"top\":10,\"right\":20,\"bottom\":30,\"left\":40}");
};
auto* bridge = new kraken::KrakenPage(0, [](int32_t contextId, const char* errmsg) {
auto bridge = TEST_init( [](int32_t contextId, const char* errmsg) {
KRAKEN_LOG(VERBOSE) << errmsg;
errorCalled = true;
});
Expand All @@ -96,7 +96,7 @@ TEST(Element, stringifyBoundingClientRect) {

const char* code = "console.log(JSON.stringify(boundingClient))";
bridge->evaluateScript(code, strlen(code), "vm://", 0);
delete bridge;

EXPECT_EQ(errorCalled, false);
EXPECT_EQ(logCalled, true);
}
Loading

0 comments on commit cd10a41

Please sign in to comment.