Bug 1291373 - [geckoview] part 4, Remove GeckoEvent and AndroidGeckoEvent r=jchen
This commit is contained in:
@@ -607,118 +607,6 @@ nsAppShell::ResolveURI(const nsCString& aUriStr)
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
class nsAppShell::LegacyGeckoEvent : public Event
|
||||
{
|
||||
mozilla::UniquePtr<AndroidGeckoEvent> ae;
|
||||
|
||||
public:
|
||||
LegacyGeckoEvent(AndroidGeckoEvent* e) : ae(e) {}
|
||||
|
||||
void Run() override;
|
||||
void PostTo(mozilla::LinkedList<Event>& queue) override;
|
||||
|
||||
Event::Type ActivityType() const override
|
||||
{
|
||||
return ae->IsInputEvent() ? mozilla::HangMonitor::kUIActivity
|
||||
: mozilla::HangMonitor::kGeneralActivity;
|
||||
}
|
||||
};
|
||||
|
||||
void
|
||||
nsAppShell::PostEvent(AndroidGeckoEvent* event)
|
||||
{
|
||||
mozilla::MutexAutoLock lock(*sAppShellLock);
|
||||
if (!sAppShell) {
|
||||
return;
|
||||
}
|
||||
sAppShell->mEventQueue.Post(mozilla::MakeUnique<LegacyGeckoEvent>(event));
|
||||
}
|
||||
|
||||
void
|
||||
nsAppShell::LegacyGeckoEvent::Run()
|
||||
{
|
||||
const mozilla::UniquePtr<AndroidGeckoEvent>& curEvent = ae;
|
||||
|
||||
EVLOG("nsAppShell: event %p %d", (void*)curEvent.get(), curEvent->Type());
|
||||
|
||||
switch (curEvent->Type()) {
|
||||
case AndroidGeckoEvent::VIEWPORT: {
|
||||
if (curEvent->Characters().Length() == 0)
|
||||
break;
|
||||
|
||||
nsCOMPtr<nsIObserverService> obsServ =
|
||||
mozilla::services::GetObserverService();
|
||||
|
||||
const NS_ConvertUTF16toUTF8 topic(curEvent->Characters());
|
||||
|
||||
obsServ->NotifyObservers(nullptr, topic.get(), curEvent->CharactersExtra().get());
|
||||
break;
|
||||
}
|
||||
|
||||
case AndroidGeckoEvent::NOOP:
|
||||
break;
|
||||
|
||||
default:
|
||||
nsWindow::OnGlobalAndroidEvent(curEvent.get());
|
||||
break;
|
||||
}
|
||||
|
||||
EVLOG("nsAppShell: -- done event %p %d", (void*)curEvent.get(), curEvent->Type());
|
||||
}
|
||||
|
||||
void
|
||||
nsAppShell::LegacyGeckoEvent::PostTo(mozilla::LinkedList<Event>& queue)
|
||||
{
|
||||
{
|
||||
EVLOG("nsAppShell::PostEvent %p %d", ae, ae->Type());
|
||||
switch (ae->Type()) {
|
||||
case AndroidGeckoEvent::VIEWPORT:
|
||||
// Coalesce a previous viewport event with this one, while
|
||||
// allowing coalescing to happen across native callback events.
|
||||
for (Event* event = queue.getLast(); event;
|
||||
event = event->getPrevious())
|
||||
{
|
||||
if (event->HasSameTypeAs(this) &&
|
||||
static_cast<LegacyGeckoEvent*>(event)->ae->Type()
|
||||
== AndroidGeckoEvent::VIEWPORT) {
|
||||
// Found a previous viewport event; remove it.
|
||||
delete event;
|
||||
break;
|
||||
}
|
||||
NativeCallbackEvent callbackEvent(nullptr);
|
||||
if (event->HasSameTypeAs(&callbackEvent)) {
|
||||
// Allow coalescing viewport events across callback events.
|
||||
continue;
|
||||
}
|
||||
// End of search for viewport events to coalesce.
|
||||
break;
|
||||
}
|
||||
queue.insertBack(this);
|
||||
break;
|
||||
|
||||
case AndroidGeckoEvent::MOTION_EVENT:
|
||||
case AndroidGeckoEvent::APZ_INPUT_EVENT:
|
||||
if (sAppShell->mAllowCoalescingTouches) {
|
||||
Event* const event = queue.getLast();
|
||||
if (event && event->HasSameTypeAs(this) && ae->CanCoalesceWith(
|
||||
static_cast<LegacyGeckoEvent*>(event)->ae.get())) {
|
||||
|
||||
// consecutive motion-move events; drop the last one before adding the new one
|
||||
EVLOG("nsAppShell: Dropping old move event at %p in favour of new move event %p", event, ae);
|
||||
// Delete the event and remove from list.
|
||||
delete event;
|
||||
}
|
||||
}
|
||||
queue.insertBack(this);
|
||||
break;
|
||||
|
||||
default:
|
||||
queue.insertBack(this);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsAppShell::AddObserver(const nsAString &aObserverKey, nsIObserver *aObserver)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user