blob: db25f306f92e332bd9b9571b0836155d15f0cab6 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "fl_test_gtk_logs.h"
#include "gtest/gtest.h"
namespace flutter {
namespace testing {
namespace {
bool gtk_initialized = false;
GLogWriterFunc log_writer_cb = nullptr;
GLogLevelFlags fl_received_log_levels = (GLogLevelFlags)0x0;
GLogWriterOutput log_writer(GLogLevelFlags log_level,
const GLogField* fields,
gsize n_fields,
gpointer user_data) {
fl_received_log_levels = (GLogLevelFlags)(log_level | fl_received_log_levels);
if (log_writer_cb == nullptr) {
return g_log_writer_default(log_level, fields, n_fields, user_data);
}
GLogWriterOutput result =
log_writer_cb(log_level, fields, n_fields, user_data);
if (result != G_LOG_WRITER_HANDLED) {
return g_log_writer_default(log_level, fields, n_fields, user_data);
}
return result;
}
} // namespace
void fl_ensure_gtk_init(GLogWriterFunc writer) {
if (!gtk_initialized) {
gtk_init(0, nullptr);
g_log_set_writer_func(log_writer, nullptr, nullptr);
gtk_initialized = true;
}
fl_reset_received_gtk_log_levels();
log_writer_cb = writer;
}
void fl_reset_received_gtk_log_levels() {
fl_received_log_levels = (GLogLevelFlags)0x0;
}
GLogLevelFlags fl_get_received_gtk_log_levels() {
return fl_received_log_levels;
}
} // namespace testing
} // namespace flutter