| // 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 |