// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

library fuchsia.modular;

// The IntentHandler interface is exposed by modules which wish to handle
// intents on the behalf of other modules or agents.
//
// The modular framework expects any module which declares support for intent
// handling in its module manifest to expose IntentHandler in its outgoing
// services.
//
// Any time the framework receives an intent which is to be handled by a specific
// module its `IntentHandler` will be called with the intent it is meant to handle.
[Discoverable]
protocol IntentHandler {
    // Handles the provided intent. Any links referenced in the intent parameters
    // will be in the namespace of the handling component, and can be retrieved via
    // `ModuleContext.GetLink`.
    HandleIntent(Intent intent);
};
