إجراءات الإضافات في الإصدار 3 من ملف البيان

منذ إطلاق إضافات Chrome، سمحت المنصة للمطوّرين بعرض وظائف الإضافات مباشرةً في واجهة مستخدم Chrome ذات المستوى الأعلى باستخدام الإجراءات. الإجراء هو زر أيقونة يمكنه فتح نافذة منبثقة أو تشغيل بعض الوظائف في الإضافة. في السابق، كان Chrome يتيح نوعين من الإجراءات، وهما إجراءات المتصفّح وإجراءات الصفحة. غيّر الإصدار 3 من Manifest هذه القاعدة من خلال دمج وظائفهما في واجهة برمجة التطبيقات الجديدة chrome.action.

لمحة قصيرة عن إجراءات الإضافات

على الرغم من أنّ chrome.action نفسه جديد في الإصدار 3 من Manifest، إلا أنّ الوظيفة الأساسية التي يوفّرها تعود إلى وقت طرح الإضافات لأول مرة في الإصدار الثابت في كانون الثاني (يناير) 2010. كان أول إصدار شغّال من نظام إضافات Chrome الأساسي يتيح نوعَين مختلفَين من الإجراءات: إجراءات المتصفّح وإجراءات الصفحة.

وقد سمحت إجراءات المتصفّح لمطوّري الإضافات بعرض رمز "في شريط أدوات Google Chrome الرئيسي، على يسار شريط العناوين" (المصدر) وأتاحت للمستخدمين طريقة سهلة لتفعيل وظيفة الإضافات على أي صفحة. أمّا إجراءات الصفحة، من ناحية أخرى، فقد كان الغرض منها هو "تمثيل الإجراءات التي يمكن اتّخاذها في الصفحة الحالية، ولكنّها لا تنطبق على جميع الصفحات" (المصدر).

يظهر إجراء على الصفحة (على اليمين) في المربّع المتعدد الاستخدامات، ما يشير إلى أنّ الإضافة يمكنها تنفيذ إجراء في هذه الصفحة. يظهر إجراء المتصفّح (على اليمين) دائمًا.

بعبارة أخرى، منحت إجراءات المتصفّح مطوّري الإضافات مساحة واجهة مستخدم دائمة في المتصفّح بينما كانت إجراءات الصفحة تظهر فقط عندما يمكن للإضافة تنفيذ إجراءات مفيدة على الصفحة الحالية.

كان كلا النوعَين من الإجراءات اختياريًا، لذا كان بإمكان مطوّر الإضافات عدم تقديم أي إجراءات أو إجراء صفحة أو إجراء متصفّح (لا يُسمح بتحديد إجراءات متعدّدة).

وبعد مرور ست سنوات تقريبًا، طرح الإصدار 49 من Chrome نموذجًا جديدًا لواجهة المستخدم في الإضافات. لمساعدة المستخدمين في معرفة الإضافات التي لديهم، بدأ Chrome بعرض جميع الإضافات النشطة على يسار مربّع البحث الشامل. يمكن للمستخدمين "تجاوز" الإضافات في قائمة Chrome إذا أرادوا ذلك.

ستظهر رموز الإضافات المخفية في قائمة Chrome.

ومن أجل عرض رمز لكل إضافة، أشار هذا التحديث أيضًا إلى تغييرَين مهمَّين في سلوك الإضافات في واجهة المستخدم على Chrome. أولاً، بدأت جميع الإضافات بعرض الرموز في شريط الأدوات. إذا لم تكن الإضافة تتضمّن رمزًا، سينشئ Chrome رمزًا لها تلقائيًا. ثانيًا، تم نقل إجراءات الصفحة إلى شريط الأدوات إلى جانب إجراءات المتصفح وتم منحها إمكانية التمييز بين حالتي "العرض" و"الإخفاء".

يظهر إجراء الصفحة غير مفعَّل (على يمين الصفحة) كصورة ذات تدرج رمادي في شريط الأدوات، بينما يظهر الإجراء مفعَّلاً (على يمين الصفحة) بالألوان الكاملة.

سمح هذا التغيير بإبقاء إضافات إجراءات الصفحة تعمل على النحو المتوقّع، ولكنه قلّل أيضًا دور إجراءات الصفحة بمرور الوقت. كان أحد تأثيرات إعادة تصميم واجهة المستخدم هو أنّ إجراءات الصفحة كانت مضمّنة بشكل فعّال في إجراءات المتصفّح. وبما أنّ جميع الإضافات تظهر في شريط الأدوات، أصبح المستخدمون يتوقعون أن يؤدي النقر على رمز شريط أدوات الإضافة إلى تفعيلها، وأصبحت إجراءات المتصفّح تفاعلاً مهمًا بشكل متزايد لإضافات Chrome.

التغييرات في الإصدار 3 من ملف البيان

استمرت واجهة مستخدم Chrome والإضافات في التطور خلال السنوات التي تلت إعادة تصميم واجهة مستخدم الإضافة في عام 2016، ولكن ظلت إجراءات المتصفّح وإجراءات الصفحة بدون تغيير إلى حد كبير. استمرّ ذلك إلى أن بدأنا التخطيط لكيفية تحديث منصّة الإضافات باستخدام ملف البيان بإصدار 3.

تبيّن لفريق الإضافات أنّ إجراءات المتصفّح وإجراءات الصفحة أصبحت بشكل متزايد تمييزًا بدون معنى. والأسوأ من ذلك، أنّ الاختلافات الطفيفة في السلوك جعلت من الصعب على المطوّرين تحديد التطبيق الذي يجب استخدامه. لقد تبيّن لنا أنّه يمكننا معالجة هذه المشاكل من خلال دمج إجراء المتصفّح وإجراء الصفحة في "إجراء" واحد.

أدخِل Action API. chrome.action هي واجهة برمجة تطبيقات مشابهة chrome.browserAction بشكل مباشر، ولكن هناك بعض الاختلافات الملحوظة بينها.

أولاً، يقدّم chrome.action طريقة جديدة باسم getUserSettings(). وتمنح هذه الطريقة مطوري الإضافات طريقة للتحقق مما إذا كان المستخدم قد ثبّت إجراء الإضافة على شريط الأدوات.

let userSettings = await chrome.action.getUserSettings();
console.log(`Is the action pinned? ${userSettings.isOnToolbar ? 'Yes' : 'No'}.`);

قد يبدو اسم getUserSettings غير مألوف لهذه الوظيفة مقارنةً باسم، مثلاً، isPinned، ولكن يُظهر سجلّ الإجراءات في Chrome أنّ واجهة مستخدِم المتصفّح تتغيّر بشكل أسرع من واجهات برمجة تطبيقات الإضافات. وبالتالي، هدفنا من واجهة برمجة التطبيقات هذه هو عرض الإعدادات المفضّلة للمستخدم المرتبطة بالإجراءات على الواجهات العامة من أجل الحدّ من إيقاف استخدام واجهة برمجة التطبيقات في المستقبل. ويسمح أيضًا لمورّدي المتصفّحات الآخرين بعرض مفاهيم واجهة مستخدِم خاصة بالمتصفّح في عنصر UserSettings الذي تعرضه هذه الطريقة.

ثانيًا، يمكن التحكّم في الرمز وحالة تفعيل/إيقاف إجراء الإضافة باستخدام Declarative Content API. وهذا مهم لأنّه يسمح للإضافات بالتفاعل مع سلوك التصفّح للمستخدم بدون الوصول إلى المحتوى أو حتى عناوين URL للصفحات التي يزورها. لنرى مثلاً كيف يمكن للإضافة تفعيل إجرائها عندما يزور المستخدم صفحات على example.com.

// Manifest V3
chrome.runtime.onInstalled.addListener(() => {
  chrome.declarativeContent.onPageChanged.removeRules(undefined, () => {
    chrome.declarativeContent.onPageChanged.addRules([
      {
        conditions: [
          new chrome.declarativeContent.PageStateMatcher({
            pageUrl: {hostSuffix: '.example.com'},
          })
        ],
        actions: [new chrome.declarativeContent.ShowAction()]
      }
    ]);
  });
});

الرمز أعلاه مطابق تقريبًا لما ستفعله الإضافة مع إجراء الصفحة. والفرق الوحيد هو أنّنا استخدمنا declarativeContent.ShowAction في الإصدار 3 من ملف البيان بدلاً من declarativeContent.ShowPageAction في الإصدار 2.

أخيرًا، يمكن لأدوات حظر المحتوى استخدام طريقة declarativeNetRequest API setExtensionActionOptions) لعرض عدد الطلبات التي حظرتها الإضافة لعلامة تبويب معيَّنة. هذه الميزة مهمة لأنّها تسمح لأدوات حظر المحتوى بإبقاء المستخدمين النهائيين على اطّلاع بدون تعريض البيانات الوصفية للتصفّح التي يُحتمل أن تكون حسّاسة للإضافة.

الخاتمة

كان تحديث منصة إضافات Chrome أحد الدوافع الرئيسية لإصدار Manifest V3. في العديد من الحالات، كان ذلك يعني التبديل إلى تقنيات جديدة، ولكنّه كان يعني أيضًا تبسيط واجهة برمجة التطبيقات، وهو ما كان هدفنا هنا.

نأمل أن تكون هذه المشاركة قد ساعدت في إلقاء بعض الضوء على هذه النقطة المحدّدة من منصة Manifest V3. لقراءة مزيد من المعلومات حول نهج فريق Chrome في ما يتعلّق بمستقبل إضافات المتصفّح، يُرجى الاطّلاع على صفحتَي رؤية النظام الأساسي ونظرة عامة على Manifest V3 في مستندات المطوّرين. يمكنك أيضًا مناقشة إضافات Chrome مع مطوّرين آخرين في مجموعة Google التي تحمل اسم chromium-extensions.