X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Faccessibility%2Fbridge%2Fbridge-impl.cpp;h=551a89a24f1291b7f244dfb935b0df7eab6360d9;hb=666559e578423c202a1c444391e1a6bf1cf7e5a5;hp=6d96eea22534542ff68026382ad837f95d1522c6;hpb=0d8e1e2ec2cff3d9682ca9b695ef6e0373509218;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/dali/internal/accessibility/bridge/bridge-impl.cpp b/dali/internal/accessibility/bridge/bridge-impl.cpp index 6d96eea..551a89a 100644 --- a/dali/internal/accessibility/bridge/bridge-impl.cpp +++ b/dali/internal/accessibility/bridge/bridge-impl.cpp @@ -227,7 +227,9 @@ public: mData->mHighlightActor = {}; mDisabledSignal.Emit(); + UnembedSocket(mApplication.GetAddress(), {AtspiDbusNameRegistry, "root"}); } + mHighlightedActor = {}; mHighlightClearAction = {}; BridgeAccessible::ForceDown(); @@ -351,17 +353,8 @@ public: } }); - auto proxy = DBus::DBusClient{AtspiDbusNameRegistry, AtspiDbusPathRoot, Accessible::GetInterfaceName(AtspiInterface::SOCKET), mConnectionPtr}; - Address root{"", "root"}; - auto res = proxy.method("Embed").call(root); - if(!res) - { - LOG() << "Call to Embed failed: " << res.getError().message; - } - assert(res); - - mApplication.mParent.SetAddress(std::move(std::get<0>(res))); - + auto parentAddress = EmbedSocket(mApplication.GetAddress(), {AtspiDbusNameRegistry, "root"}); + mApplication.mParent.SetAddress(std::move(parentAddress)); mEnabledSignal.Emit(); return ForceUpResult::JUST_STARTED; @@ -693,6 +686,40 @@ public: { return mIsEnabled; } + + Address EmbedSocket(const Address& plug, const Address& socket) override + { + auto client = CreateSocketClient(socket); + auto reply = client.method("Embed").call(plug); + + if(!reply) + { + DALI_LOG_ERROR("Failed to embed socket %s: %s", socket.ToString().c_str(), reply.getError().message.c_str()); + return {}; + } + + return std::get<0>(reply.getValues()); + } + + void EmbedAtkSocket(const Address& plug, const Address& socket) override + { + auto client = CreateSocketClient(socket); + + client.method("Embedded").call(ATSPI_PREFIX_PATH + plug.GetPath()); + } + + void UnembedSocket(const Address& plug, const Address& socket) override + { + auto client = CreateSocketClient(socket); + + client.method("Unembed").call(plug); + } + +private: + DBus::DBusClient CreateSocketClient(const Address& socket) + { + return {socket.GetBus(), ATSPI_PREFIX_PATH + socket.GetPath(), Accessible::GetInterfaceName(AtspiInterface::SOCKET), mConnectionPtr}; + } }; // BridgeImpl namespace // unnamed namespace @@ -780,7 +807,7 @@ void Bridge::EnableAutoInit() auto window = Dali::DevelWindow::Get(rootLayer); auto applicationName = Dali::Internal::Adaptor::Adaptor::GetApplicationPackageName(); - auto accessible = Accessibility::Accessible::Get(rootLayer, true); + auto accessible = Accessibility::Accessible::Get(rootLayer); auto bridge = Bridge::GetCurrentBridge(); bridge->AddTopLevelWindow(accessible);