ম্যানিফেস্ট V3-এ এক্সটেনশন অ্যাকশন

Chrome এক্সটেনশন চালু হওয়ার পর থেকে, প্ল্যাটফর্মটি ডেভেলপারদের অ্যাকশন ব্যবহার করে সরাসরি শীর্ষ স্তরের Chrome UI-তে এক্সটেনশন কার্যকারিতা প্রকাশ করার অনুমতি দিয়েছে। একটি ক্রিয়া হল একটি আইকন বোতাম যা একটি পপআপ খুলতে পারে বা এক্সটেনশনে কিছু কার্যকারিতা ট্রিগার করতে পারে৷ ঐতিহাসিকভাবে, Chrome দুই ধরনের অ্যাকশন সমর্থন করে, ব্রাউজার অ্যাকশন এবং পেজ অ্যাকশন; ম্যানিফেস্ট V3 একটি নতুন chrome.action API-এ তাদের কার্যকারিতা একত্রিত করে এটি পরিবর্তন করেছে।

এক্সটেনশন কর্মের একটি সংক্ষিপ্ত ইতিহাস

যদিও chrome.action নিজেই ম্যানিফেস্ট V3-তে নতুন, এটি মৌলিক কার্যকারিতা প্রদান করে যখন এক্সটেনশনগুলি প্রথম স্থিতিশীল অবস্থায় আসে জানুয়ারী, 2010 - .

ব্রাউজার ক্রিয়াগুলি এক্সটেনশন বিকাশকারীদের "প্রধান Google Chrome টুলবারে, ঠিকানা বারের ডানদিকে" একটি আইকন প্রদর্শন করার অনুমতি দেয় ( উত্স ) এবং ব্যবহারকারীদের যে কোনও পৃষ্ঠায় এক্সটেনশন কার্যকারিতা ট্রিগার করার একটি সহজ উপায় প্রদান করে৷ অন্যদিকে, পৃষ্ঠার ক্রিয়াগুলি "বর্তমান পৃষ্ঠায় নেওয়া যেতে পারে এমন ক্রিয়াগুলিকে উপস্থাপন করার উদ্দেশ্যে করা হয়েছিল, তবে এটি সমস্ত পৃষ্ঠাগুলিতে প্রযোজ্য নয়" ( উত্স )৷

অম্নিবক্সে একটি পৃষ্ঠার ক্রিয়া (বাম) প্রদর্শিত হয়, যা নির্দেশ করে যে এক্সটেনশন এই পৃষ্ঠায় কিছু করতে পারে৷ একটি ব্রাউজার ক্রিয়া (ডান) সর্বদা দৃশ্যমান।

অন্য কথায়, ব্রাউজার ক্রিয়াগুলি এক্সটেনশন বিকাশকারীদের ব্রাউজারে একটি স্থায়ী UI পৃষ্ঠ দেয় যখন পৃষ্ঠার ক্রিয়াগুলি তখনই উপস্থিত হয় যখন এক্সটেনশনটি বর্তমান পৃষ্ঠায় কার্যকর কিছু করতে পারে৷

উভয় ধরনের ক্রিয়াই ঐচ্ছিক ছিল, তাই একজন এক্সটেনশন বিকাশকারী কোন ক্রিয়া, একটি পৃষ্ঠা ক্রিয়া, বা একটি ব্রাউজার ক্রিয়া (একাধিক ক্রিয়া নির্দিষ্ট করা অনুমোদিত নয়) প্রদান করতে বেছে নিতে পারে৷

প্রায় ছয় বছর পরে, Chrome 49 এক্সটেনশনের জন্য একটি নতুন UI দৃষ্টান্ত প্রবর্তন করেছে। ব্যবহারকারীদের তাদের কী এক্সটেনশন আছে তা বুঝতে সাহায্য করার জন্য, Chrome সমস্ত সক্রিয় এক্সটেনশনগুলিকে বহূউপযোগীক্ষেত্রের ডানদিকে প্রদর্শন করা শুরু করেছে৷ ব্যবহারকারীরা চাইলে Chrome মেনুতে এক্সটেনশানগুলিকে "ওভারফ্লো" করতে পারে৷

লুকানো এক্সটেনশন আইকন Chrome মেনুতে প্রদর্শিত হবে।

প্রতিটি এক্সটেনশনের জন্য একটি আইকন প্রদর্শন করার জন্য, এই আপডেটটি Chrome-এর UI-তে এক্সটেনশনগুলি কীভাবে আচরণ করে তার দুটি গুরুত্বপূর্ণ পরিবর্তনেরও সূচনা করেছে৷ প্রথমত, সমস্ত এক্সটেনশন টুলবারে আইকন প্রদর্শন করা শুরু করে। যদি এক্সটেনশনে একটি আইকন না থাকে, তাহলে Chrome এটির জন্য একটি স্বয়ংক্রিয়ভাবে তৈরি করবে। দ্বিতীয়ত, পৃষ্ঠার ক্রিয়াগুলি ব্রাউজার অ্যাকশনগুলির পাশাপাশি টুলবারে স্থানান্তরিত হয়েছিল এবং তাদের "শো" এবং "লুকান" অবস্থার মধ্যে পার্থক্য করার জন্য একটি সামর্থ্য দেওয়া হয়েছিল।

একটি অক্ষম পৃষ্ঠা অ্যাকশন (বাম) টুলবারে একটি গ্রেস্কেল চিত্র রেন্ডার করা হয় যখন একটি সক্রিয় একটি (ডান) সম্পূর্ণ রঙের সাথে প্রদর্শিত হয়।

এই পরিবর্তনটি পৃষ্ঠা অ্যাকশন এক্সটেনশনগুলিকে প্রত্যাশিত হিসাবে কাজ চালিয়ে যাওয়ার অনুমতি দিয়েছে, তবে এটি সময়ের সাথে সাথে পৃষ্ঠা অ্যাকশনের ভূমিকাও হ্রাস করেছে। UI পুনরায় ডিজাইনের প্রভাবগুলির মধ্যে একটি হল যে পৃষ্ঠার ক্রিয়াগুলি কার্যকরভাবে ব্রাউজার অ্যাকশন দ্বারা সাবমিট করা হয়েছিল। যেহেতু সমস্ত এক্সটেনশন টুলবারে উপস্থিত হয়েছে, ব্যবহারকারীরা আশা করেছিলেন যে একটি এক্সটেনশনের টুলবার আইকনে ক্লিক করলে এক্সটেনশনটি চালু হবে এবং ব্রাউজার ক্রিয়াগুলি Chrome এক্সটেনশনগুলির জন্য একটি ক্রমবর্ধমান গুরুত্বপূর্ণ মিথস্ক্রিয়া হয়ে উঠেছে৷

ম্যানিফেস্ট V3 পরিবর্তন

2016 এক্সটেনশন UI পুনঃডিজাইন করার পরের বছরগুলিতে Chrome UI এবং এক্সটেনশনগুলি বিকশিত হতে থাকে, কিন্তু ব্রাউজার অ্যাকশন এবং পেজ অ্যাকশনগুলি অনেকাংশে অপরিবর্তিত ছিল। অর্থাৎ, অন্তত যতক্ষণ না আমরা ম্যানিফেস্ট V3-এর মাধ্যমে এক্সটেনশন প্ল্যাটফর্মকে আধুনিকীকরণ করার পরিকল্পনা শুরু করি।

এটি এক্সটেনশন টিমের কাছে স্পষ্ট ছিল যে ব্রাউজার অ্যাকশন এবং পৃষ্ঠা অ্যাকশনগুলি ক্রমবর্ধমান অর্থ ছাড়াই একটি পার্থক্য। আরও খারাপ, তাদের সূক্ষ্ম আচরণের পার্থক্য বিকাশকারীদের জন্য কোনটি ব্যবহার করতে হবে তা নির্ধারণ করা কঠিন করে তুলেছে। আমরা বুঝতে পেরেছি যে আমরা ব্রাউজার অ্যাকশন এবং পেজ অ্যাকশনকে একটি একক "অ্যাকশন"-এ একত্রিত করে এই সমস্যাগুলির সমাধান করতে পারি।

অ্যাকশন API লিখুন; chrome.action সবচেয়ে সরাসরি chrome.browserAction এর সাথে সাদৃশ্যপূর্ণ, কিন্তু এর কিছু উল্লেখযোগ্য পার্থক্য রয়েছে।

প্রথমে, chrome.action getUserSettings() নামে একটি নতুন পদ্ধতি প্রবর্তন করে। এই পদ্ধতিটি এক্সটেনশন ডেভেলপারদের টুলবারে তাদের এক্সটেনশনের ক্রিয়া পিন করেছে কিনা তা পরীক্ষা করার একটি উপায় দেয়৷

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

"isPinned" এর তুলনায় "getUserSettings" এই কার্যকারিতার জন্য কিছুটা অস্বাভাবিক নাম বলে মনে হতে পারে, কিন্তু Chrome-এর ক্রিয়াকলাপের ইতিহাস দেখায় যে ব্রাউজার UI এক্সটেনশন APIগুলির তুলনায় দ্রুত পরিবর্তন হয়৷ যেমন, এই API-এর সাথে আমাদের লক্ষ্য হল ভবিষ্যতের API মন্থন কমানোর জন্য জেনেরিক ইন্টারফেসে অ্যাকশন-সম্পর্কিত ব্যবহারকারীর পছন্দগুলি প্রকাশ করা। এটি অন্যান্য ব্রাউজার বিক্রেতাদের এই পদ্ধতি দ্বারা ফিরে আসা UserSettings অবজেক্টে ব্রাউজার-নির্দিষ্ট UI ধারণাগুলিকে প্রকাশ করতে দেয়৷

দ্বিতীয়ত, একটি এক্সটেনশনের অ্যাকশনের আইকন এবং সক্রিয়/অক্ষম অবস্থা ঘোষণামূলক বিষয়বস্তু 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()]
      }
    ]);
  });
});

উপরের কোডটি একটি এক্সটেনশন একটি পৃষ্ঠা অ্যাকশনের সাথে যা করবে তার প্রায় অভিন্ন। শুধুমাত্র পার্থক্য হল ম্যানিফেস্ট V3 তে আমরা declarativeContent.ShowAction এর পরিবর্তে declarativeContent.ShowPageAction ব্যবহার করেছি।

অবশেষে, কন্টেন্ট ব্লকাররা declarativeNetRequest API-এর setExtensionActionOptions ) পদ্ধতি ব্যবহার করতে পারে প্রদত্ত ট্যাবের জন্য এক্সটেনশন দ্বারা ব্লক করা অনুরোধের সংখ্যা প্রদর্শন করতে। এই ক্ষমতাটি গুরুত্বপূর্ণ কারণ এটি কন্টেন্ট ব্লকারদের এক্সটেনশনে সম্ভাব্য সংবেদনশীল ব্রাউজিং মেটাডেটা প্রকাশ না করে শেষ ব্যবহারকারীদের অবগত রাখতে দেয়।

শেষ করি

ক্রোম এক্সটেনশন প্ল্যাটফর্মের আধুনিকীকরণ ছিল ম্যানিফেস্ট V3-এর জন্য আমাদের অন্যতম প্রধান প্রেরণা৷ অনেক ক্ষেত্রে এর অর্থ নতুন প্রযুক্তিতে স্যুইচ করা, কিন্তু এর অর্থ আমাদের API পৃষ্ঠকে সরলীকরণ করা; এটাই আমাদের লক্ষ্য ছিল এখানে।

আমি আশা করি এই পোস্টটি ম্যানিফেস্ট V3 প্ল্যাটফর্মের এই বিশেষ কোণে কিছু আলোকপাত করতে সাহায্য করেছে। Chrome টিম কীভাবে ব্রাউজার এক্সটেনশনের ভবিষ্যতের দিকে এগিয়ে যাচ্ছে সে সম্পর্কে আরও জানতে, আমাদের ডেভেলপার ডকুমেন্টেশনে প্ল্যাটফর্ম ভিশন এবং ম্যানিফেস্ট V3 পৃষ্ঠাগুলির ওভারভিউ দেখুন৷ আপনি ক্রোমিয়াম-এক্সটেনশন Google গ্রুপে অন্যান্য বিকাশকারীদের সাথে ক্রোম এক্সটেনশনগুলি নিয়েও আলোচনা করতে পারেন৷