A New Collection of Thoughtful Learning Apps — Now Available on iOS & Android

Image
I’m excited to share a set of mobile apps I’ve recently completed and published on both the Google Play Store and the Apple App Store. These apps are designed with a simple goal in mind: to make meaningful, structured content more accessible, whether you’re studying theology or improving your English vocabulary. 📱 Now Available on Both Platforms All apps are live and available for download: Google Play Developer Page: https://play.google.com/store/apps/dev?id=5835943159853189043 Apple App Store Developer Page: https://apps.apple.com/ca/developer/q-z-l-corp/id1888794100 📖 Theology & Confession Study Apps For those interested in Reformed theology and classical Christian teachings, I’ve developed a series of apps that present foundational texts in a clean, focused reading format: The Belgic Confession Canons of Dort Heidelberg Catechism Westminster Shorter Catechism Each app is designed to provide a distraction-free experience, making it easier to read, reflect, and revisit these im...

chromium : extensions::Extension construction back trace in Render process

extensions/renderer/dispatcher.cc
extensions::Dispatcher receive ExtensionMsg_Loaded from
extensions/browser/renderer_startup_helper.cc
RendererStartupHelper::InitializeProcess

  // Loaded extensions.
  std::vector<ExtensionMsg_Loaded_Params> loaded_extensions;
  BrowserContext* renderer_context = process->GetBrowserContext();
  const ExtensionSet& extensions =
      ExtensionRegistry::Get(browser_context_)->enabled_extensions();
  for (const auto& ext : extensions) {
    // OnLoadedExtension should have already been called for the extension.
    DCHECK(base::ContainsKey(extension_process_map_, ext->id()));
    DCHECK(!base::ContainsKey(extension_process_map_[ext->id()], process));

    if (!IsExtensionVisibleToContext(*ext, renderer_context))
      continue;

    // TODO(kalman): Only include tab specific permissions for extension
    // processes, no other process needs it, so it's mildly wasteful.
    // I am not sure this is possible to know this here, at such a low
    // level of the stack. Perhaps site isolation can help.
    bool include_tab_permissions = true;
    loaded_extensions.push_back(
        ExtensionMsg_Loaded_Params(ext.get(), include_tab_permissions));
    extension_process_map_[ext->id()].insert(process);
  }

  // Activate pending extensions.
  process->Send(new ExtensionMsg_Loaded(loaded_extensions));

#2 0x55717e31dfa6 extensions::Extension::Create()
#3 0x55717e369acb ExtensionMsg_Loaded_Params::ConvertToExtension()
#4 0x55717c503dc5 extensions::Dispatcher::OnLoaded()
#5 0x55717b464a9d _ZN4base20DispatchToMethodImplIPN10extensions22ExtensionMessageFilterEMS2_FvRKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEENS4_5tupleIJSA_EEEJLm0EEEEvRKT_T0_OT1_NS4_16integer_sequenceImJXspT2_EEEE
#6 0x55717b4649f8 _ZN4base16DispatchToMethodIPN10extensions22ExtensionMessageFilterEMS2_FvRKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEENS4_5tupleIJSA_EEEEEvRKT_T0_OT1_
#7 0x55717b464987 _ZN3IPC16DispatchToMethodIN10extensions22ExtensionMessageFilterEMS2_FvRKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEvNS3_5tupleIJS9_EEEEEvPT_T0_PT1_OT2_
#8 0x55717c509c75 _ZN3IPC8MessageTI24ExtensionMsg_Loaded_MetaNSt3__15tupleIJNS2_6vectorI26ExtensionMsg_Loaded_ParamsNS2_9allocatorIS5_EEEEEEEvE8DispatchIN10extensions10DispatcherESD_vMSD_FvRKS8_EEEbPKNS_7MessageEPT_PT0_PT1_T2_
#9 0x55717c502bc9 extensions::Dispatcher::OnControlMessageReceived()
#10 0x7f342b8fda03 content::RenderThreadImpl::OnControlMessageReceived()
#11 0x7f34292185a3 content::ChildThreadImpl::OnMessageReceived()
#12 0x7f342b8fc2d8 content::RenderThreadImpl::OnMessageReceived()
#13 0x7f342e3c8bc8 IPC::ChannelProxy::Context::OnDispatchMessage()
#14 0x7f342e3cf03f _ZN4base8internal13FunctorTraitsIMN3IPC12ChannelProxy7ContextEFvRKNS2_7MessageEEvE6InvokeIRK13scoped_refptrIS4_EJS7_EEEvS9_OT_DpOT0_
#15 0x7f342e3cef9f _ZN4base8internal12InvokeHelperILb0EvE8MakeItSoIRKMN3IPC12ChannelProxy7ContextEFvRKNS4_7MessageEEJRK13scoped_refptrIS6_ES9_EEEvOT_DpOT0_
#16 0x7f342e3cef2d _ZN4base8internal7InvokerINS0_9BindStateIMN3IPC12ChannelProxy7ContextEFvRKNS3_7MessageEEJ13scoped_refptrIS5_ES6_EEEFvvEE7RunImplIRKSA_RKNSt3__15tupleIJSC_S6_EEEJLm0ELm1EEEEvOT_OT0_NSJ_16integer_sequenceImJXspT1_EEEE
#17 0x7f342e3cee3c _ZN4base8internal7InvokerINS0_9BindStateIMN3IPC12ChannelProxy7ContextEFvRKNS3_7MessageEEJ13scoped_refptrIS5_ES6_EEEFvvEE3RunEPNS0_13BindStateBaseE
#18 0x7f342feb4061 _ZNO4base12OnceCallbackIFvvEE3RunEv
#19 0x7f342ff0e1ca base::debug::TaskAnnotator::RunTask()
#20 0x7f341d17b429 blink::scheduler::TaskQueueManager::ProcessTaskFromWorkQueue()
#21 0x7f341d175ef9 blink::scheduler::TaskQueueManager::DoWork()
#22 0x7f341d184287 _ZN4base8internal13FunctorTraitsIMN5blink9scheduler16TaskQueueManagerEFvbEvE6InvokeIRKNS_7WeakPtrIS4_EEJRKbEEEvS6_OT_DpOT0_
#23 0x7f341d1841e5 _ZN4base8internal12InvokeHelperILb1EvE8MakeItSoIRKMN5blink9scheduler16TaskQueueManagerEFvbERKNS_7WeakPtrIS6_EEJRKbEEEvOT_OT0_DpOT1_
#24 0x7f341d18415d _ZN4base8internal7InvokerINS0_9BindStateIMN5blink9scheduler16TaskQueueManagerEFvbEJNS_7WeakPtrIS5_EEbEEEFvvEE7RunImplIRKS7_RKNSt3__15tupleIJS9_bEEEJLm0ELm1EEEEvOT_OT0_NSG_16integer_sequenceImJXspT1_EEEE
#25 0x7f341d18406c _ZN4base8internal7InvokerINS0_9BindStateIMN5blink9scheduler16TaskQueueManagerEFvbEJNS_7WeakPtrIS5_EEbEEEFvvEE3RunEPNS0_13BindStateBaseE
#26 0x7f342feb4061 _ZNO4base12OnceCallbackIFvvEE3RunEv
#27 0x7f342ff0e1ca base::debug::TaskAnnotator::RunTask()
#28 0x7f342ffaf105 base::internal::IncomingTaskQueue::RunTask()
#29 0x7f342ffb805a base::MessageLoop::RunTask()
#30 0x7f342ffb8306 base::MessageLoop::DeferOrRunPendingTask()
#31 0x7f342ffb8650 base::MessageLoop::DoWork()
#32 0x7f342ffbb19a base::MessagePumpDefault::Run()
#33 0x7f342ffb77dc base::MessageLoop::Run()
#34 0x7f343006479b base::RunLoop::Run()
#35 0x7f342b962e2b content::RendererMain()
#36 0x7f342bde9e84 content::RunZygote()
#37 0x7f342bdeab61 content::RunNamedProcessTypeMain()
#38 0x7f342bded5aa content::ContentMainRunnerImpl::Run()
#39 0x7f342bde3a6d content::ContentServiceManagerMainDelegate::RunEmbedderProcess()
#40 0x7f343072589d service_manager::Main()
#41 0x7f342bde97ff content::ContentMain()
#42 0x55717afed23e ChromeMain
#43 0x55717afed152 main
#44 0x7f3417104f45 __libc_start_main
#45 0x55717afed02a _start

❤️ Support This Blog


If this post helped you, you can support my writing with a small donation. Thank you for reading.


Comments

Popular Posts

Fix “A problem occurred starting process 'command node'” in Android Studio for React Native

Fix up watchman issue with Ghost

Using Mutual TLS (mTLS) in Next.js (Server-Side Only)